4

我想验证我正在使用的电子邮件文本RegexKitLite.h。我正在做如下事情:

NSString *strEmail = [txtEmail text];
                NSRange range = [strEmail rangeOfRegex:@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"];
                NSLog(@"%@",range);  

现在我只是检查这是否有效。但我在第二行遇到错误。日志什么也没说。但是第二行有一个警告,上面写着:

Unknown escape sequence '\.'  

可能是什么问题?是表达有问题还是有其他问题?

4

1 回答 1

7

您不需要在字符类中转义点。大多数正则表达式引擎都会忽略这种错误,Objective C 似乎更严格。试试这个:

rangeOfRegex:@"^[a-zA-Z][\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$"

但是(与问题无关),这是一个相当奇怪的电子邮件验证正则表达式,因为它会拒绝许多有效的电子邮件地址并允许许多无效的电子邮件地址。我不知道您在这里的目标是什么,但通常最好不要对验证正则表达式过于严格,而是通过实际向该地址发送电子邮件并查看它是否失败来进行验证。

于 2011-07-25T05:52:13.717 回答