未知的转义序列 - 正则表达式

时间:2011-07-25 05:50:15

标签: iphone regex nsrange

我想验证我使用的电子邮件文本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 '\.'  

可能是什么问题?表达中是否有问题还是存在其他问题?

1 个答案:

答案 0 :(得分: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]$"

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