1

这是代码

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)" options:NSRegularExpressionCaseInsensitive error:&error];

代码本身可以工作,但会发出以下警告:

"Unknown escape sequence \." 

我还尝试了以下选项:

NSRegularExpressionCaseInsensitive|NSRegularExpressionAnchorsMatchLines

但错误仍然存​​在。谁能解释为什么会出现此错误以及如何将其删除。

4

1 回答 1

5

如果您将正则表达式编写为字符串文字并且它包含反斜杠,则必须使用第二个反斜杠对其进行转义,因为反斜杠还用于转义字符串文字中的某些特殊字符(例如\n\t等)。

所以如果你想让你的正则表达式包含\.,你必须把它写成\\.. 同样,这仅适用于您使用字符串文字,而不是从文件加载正则表达式。

如果您确实想要一个没有反斜杠的句点(这实际上就是您现在所拥有的),请删除反斜杠以消除警告。

于 2012-04-23T10:26:11.963 回答