这段代码如何验证电子邮件的工作原理?

时间:2010-09-17 07:18:50

标签: iphone

此代码验证您的电子邮件字段,但我无法理解它是如何工作的。

NSString *e = email.text;
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];
BOOL myStringMatchesRegEx = [regExPredicate evaluateWithObject:e];
NSLog(@"myStringMatchesRegEx = %d ",myStringMatchesRegEx);

1 个答案:

答案 0 :(得分:2)

这是一个巨大的正则表达式:)

基本上,NSPredicate表示它希望自己匹配(最后是NSString)和正则表达式(你熟悉正则表达式吗?)并返回YES / NO如果给定的NSString(即email.text)与该正则表达式匹配,则响应。

从本质上讲,它确保电子邮件文本根据大量的正则表达式(我不会进入,因为它需要数小时才能解决)才有效。