2

我正在开发一个需要使用正则表达式来验证 ipv4 地址的 iOS 项目。

我使用以下代码

// 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。

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

4

1 回答 1

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]?)$"
于 2013-02-26T17:34:00.283 回答