I am trying to put validation in text field containing email address.
What is to be added in string "emailRegEx" to limit the user from inserting three dots in email address or what I have to write in method for same.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string.
Here is my code:
- (BOOL)EmailValidationL:(NSString *)email
{
NSString *emailRegEx =@"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-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])+)\\])";
NSPredicate *regExPredicate =
[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
a= [regExPredicate evaluateWithObject:email];
return a;
}
you can do it by using the extension of String
extension String {
var isEmail: Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailTest.evaluate(with: self)
}
}
now you can use it as
if emailtext.isEmail {
print("email is valid")
} else {
print("email is not valid")
}
iOS already has built-in data detectors for a number of different data types. Although email isn't one of those types, an email address falls under the subtype of a link. Knowing that, it's easy to check for an email address:
NSError *error = nil;
NSDataDetector *detector =
[NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
NSString *string = @"[email protected]";
[detector enumerateMatchesInString:string
options:kNilOptions
range:NSMakeRange(0, [string length])
usingBlock:^(NSTextCheckingResult *result,
NSMatchingFlags flags, BOOL *stop)
{
if([result.URL.absoluteString rangeOfString:@"mailto:"].location != NSNotFound)
{
NSLog(@"Match: %@", result);
}
}];
Matt Thompson's NSHipster blog has an excellent article on NSDataDetector
and its useage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With