我正在开发一个iOS项目,需要使用正则表达式来验证ipv4地址。
我使用以下代码
// only support ip4 currently
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"^(?:(?: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]?)$"
options:0
error:nil];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:IpString options:0 range:NSMakeRange(0, [IpString length])];
return (numberOfMatches==1?TRUE:FALSE);
XCode继续警告我“未知逃脱序列”。当我输入“1.3.6.-6”或“2.3.33”时返回true。
如何在正则表达式中使用点(。)?感谢
答案 0 :(得分:4)
你需要加倍反斜杠你的.
,因为NSString正在解释第一个反斜杠,而且它正在寻找.
的转义字符(它不存在) )。双反斜杠(\\.
)将导致第一个反斜杠转义第二个反斜杠(确实存在),这意味着您可以正常使用\
。
例如,你的正则表达式将是:
@"^(?:(?: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]?)$"