Iphone NSRegularExpression发出警告

Iphone NSRegularExpression发出警告,iphone,objective-c,regex,xcode,nsregularexpression,Iphone,Objective C,Regex,Xcode,Nsregularexpression,这是密码 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|

这是密码

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

但错误依然存在。有人能解释为什么会出现此错误以及如何删除此错误。

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

因此,如果希望正则表达式包含
\.
,则必须将其编写为
\.
。同样,这只适用于使用字符串文本的情况,而不适用于从文件加载正则表达式的情况


如果您确实希望句点不带反斜杠(实际上就是现在的句点),请删除反斜杠以消除警告。

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

因此,如果希望正则表达式包含
\.
,则必须将其编写为
\.
。同样,这只适用于使用字符串文本的情况,而不适用于从文件加载正则表达式的情况


如果您确实希望句点没有反斜杠(实际上就是现在的句点),请删除反斜杠以消除警告。

refere-refere-Yes,它使点成为正则表达式中的文字点,而不是正则表达式语法的一部分。我猜这就是正则表达式的用法。否则,您必须删除反斜杠才能在没有警告的情况下获得相同的行为。@omz:我认为这不会改变这种情况下的含义。警告看起来像是来自字符串处理器,而不是正则表达式引擎。这意味着它被隐式翻译成
\.
。但这仍然是一个有用的警告,因为其他一些转义序列,如
\b
(backspace vs.word boundary),如果转义不正确,它们的含义会发生变化
[@“foo\.bar”IsequalString:@“foo.bar”]
返回
,因此
\.
中的反斜杠被忽略,不会隐式转换为双反斜杠。omz完全正确。。。删除“\”确实给了我与双斜杠“\”相同的行为。。。谢谢,请在@omz.更正答案。。并将其改为“.”,而不是键入“\\”,因为在问题的上下文中,涉及一个NSString.:)是的,它使点成为正则表达式中的文字点,而不是正则表达式语法的一部分。我猜这就是正则表达式的用法。否则,您必须删除反斜杠才能在没有警告的情况下获得相同的行为。@omz:我认为这不会改变这种情况下的含义。警告看起来像是来自字符串处理器,而不是正则表达式引擎。这意味着它被隐式翻译成
\.
。但这仍然是一个有用的警告,因为其他一些转义序列,如
\b
(backspace vs.word boundary),如果转义不正确,它们的含义会发生变化
[@“foo\.bar”IsequalString:@“foo.bar”]
返回
,因此
\.
中的反斜杠被忽略,不会隐式转换为双反斜杠。omz完全正确。。。删除“\”确实给了我与双斜杠“\”相同的行为。。。谢谢,请在@omz.更正答案。。并将其改为“.”,而不是键入“\\”,因为在问题的上下文中,涉及一个NSString.:)