我正在处理一个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]?)$"