我有以下方法来验证我的电子邮件地址在窗体中。如何验证“。”在电子邮件地址?
-(BOOL) validEmailAddress:(NSString*) emailString {
NSString *regExPattern = @"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+.[A-Z]{2,4}$";
NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
if (regExMatches == 0)
return NO; // email invalid
else
return YES; // email valid
}
这个伟大的工程,除了它打破了如果用户给出“ABC @ XYZ”的电子邮件(不象.com或.org超级域)。
我很确定问题与“。”有关。在我的正则表达式中。我试图像这样逃脱它,
NSString *regExPattern = @"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$";
但这也行不通。有什么建议么?
编辑:当最初发布问题时,我没有在最后一个点之前进行转义。抱歉。
你是什么意思*分解*?您的功能是否将'abc @ xyz'视为有效的电子邮件地址?如果是这样,那很好,因为'abc @ xyz' *是一个有效的电子邮件地址。 – Oswald 2013-04-05 22:51:42
您可能需要查看http://www.regular-expressions.info/email.html关于验证具有正则表达式的电子邮件的其他提示 – david 2013-04-05 22:57:10
和http://data.iana.org/TLD/tlds -alpha-by-domain.txt查看有效顶级域名列表 – david 2013-04-05 23:06:14