通过正则表达式验证IP地址 - 未知的转义序列

时间:2013-02-26 17:13:49

标签: ios regex nsregularexpression

我正在开发一个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。

如何在正则表达式中使用点(。)?感谢

1 个答案:

答案 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]?)$"