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



我正在处理一个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。

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

您需要对.进行双反斜杠,因为第一个反斜杠由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]?)$"

最新更新