Last active
September 25, 2020 08:51
-
-
Save darthpelo/dfe3c460585f4f035c24ede994faeb80 to your computer and use it in GitHub Desktop.
This regular expression is adapted from a version at regular-expressions.info and is a complete verification of RFC 2822. Source: http://www.cocoawithlove.com/2009/06/verifying-that-string-is-email-address.html. Dedicate article: https://medium.com/@darthpelo/email-validation-in-swift-3-0-acfebe4d879a
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// Validate email string | |
/// | |
/// - parameter email: A String that rappresent an email address | |
/// | |
/// - returns: A Boolean value indicating whether an email is valid. | |
func isValid(_ email: String) -> Bool { | |
let emailRegEx = "(?:[a-zA-Z0-9!#$%\\&‘*+/=?\\^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%\\&'*+/=?\\^_`{|}” + | |
“~-]+)*|\“(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\” + | |
“x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\“)@(?:(?:[a-z0-9](?:[a-” + | |
“z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5" + | |
“]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-” + | |
“9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21" + | |
“-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])" | |
let emailTest = NSPredicate(format:"SELF MATCHES[c] %@", emailRegEx) | |
return emailTest.evaluate(with: email) | |
} |
@darthpelo @sendoa Updated to be an extension on String
. Also updated documentation and formatting: https://gist.github.com/DanielStormApps/28ac56b5edc38ac7023960909b5f6d84
@sendoa and @DanielStormApps thanks and sorry for the delay! My bad!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for the snippet! I don't know if it's because of Github's formatting systema but the double quotes are wrong so if you try to copy & paste the code you get compilation errors. The code corrected: