Here’s a couple of quick functions I use in a few forms in different projects.
They’re pretty common and can be found other places. I based these on various things I’ve found online. So, like most things, I can’t take 100% credit but we all learned things from somewhere.
The first is an email validator. Basically it just verfies that:
- There’s some text before the @
- There’s some text after the @
- There’s at least 2 alpha characters after a .
import Foundation
// validate an email for the right format
func isValidEmail(email:String?) -> Bool {
guard email != nil else { return false }
let regEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let pred = NSPredicate(format:"SELF MATCHES %@", regEx)
return pred.evaluate(with: email)
}
The second is a password format validator. It basically checks for…
- There’s at least one uppercase letter
- There’s at least one lowercase letter
- There’s at least one numeric digit
- The text is at least 8 characters long
func isValidPassword(testStr:String?) -> Bool {
guard testStr != nil else { return false }
// at least one uppercase,
// at least one digit
// at least one lowercase
// 8 characters total
let passwordTest = NSPredicate(format: "SELF MATCHES %@", "(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}")
return passwordTest.evaluate(with: testStr)
}
In both cases, you can see the regular expression format and change it as needed. For example, the email validator use to require 3 characters after the . for things like .com, .net, etc. but now there are many domains with 2 characters like .co – technically there always has been but many examples online required 3.
My first email address was Swedish and had .se – that through a lot of people off.
