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

标签 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。

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

最佳答案

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

关于ios - 通过正则表达式验证 IP 地址 - 未知转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095181/

相关文章:

ios - Xcode程序包管理器首先出现,但之后不出现

ios - 跟踪每个用户的设备数量

javascript - 如何在 JavaScript 中检查字符串是否包含字符串数组中的子字符串

double 上的Java正则表达式

正则表达式 - 匹配每行字符的单个实例/出现

regex - 正则表达式仅在golang中屏蔽任何匹配10位数字的字符串

ios - 从 Swift 4 中的可选项获取字符串值

ios - UILabel 上的 Swift map "Anonymous closure argument not contained in closure"

javascript - 正则表达式解析@references,包括引号?

objective-c - Objective C 中检测开始/结束对字符的正则表达式