我正在寻找一个正则表达式,该正则表达式可以找到无范围限制(即0-999)的IP地址。这比普通的IP地址正则表达式“简单”,但是我正在学习正则表达式,并且对如何从本质上结束正则表达式感到困惑,并且不匹配IP地址前后不超过4个句点或字符。
这就是我所拥有的:"/\b(\d{1,3}\.){3}(\d{1,3})\b/"
因此,使用此正则表达式,它将找到大多数IP地址,但是当存在这样的IP地址时将失败:
1.2.3.4.5
感谢帮助。不管哪种口味或正则表达式都没关系,只需要知道如何与上面的情况不匹配即可。
答案 0 :(得分:2)
您可以使用lookarounds将上下文限制在预期的匹配范围内:
\b(?<!\d\.)(?:\d{1,3}\.){3}\d{1,3}\b(?!\.\d)
^^^^^^^^^ ^^^^^^^^
请参见regex demo
在这里
(?<!\d\.)
是一个负向后看,如果当前位置左侧紧靠数字+ .
(?!\.\d)
是一个否定的超前查询,如果当前位置右侧紧邻.
+一个数字,则匹配失败。还要确保1到3位数字的八位字节匹配,您可以添加更多限制:
\b(?<!\d\.|\d)(?:\d{1,3}\.){3}\d{1,3}\b(?!\.?\d)
^^^^^^^^^^^^ ^^^^^^^^^
在这里,(?<!\d\.|\d)
也会在当前位置的前面紧跟着一个数字时失败,并且当预期的匹配之后在前面没有一个点的数字时,超前也会失败。
答案 1 :(得分:0)
您也可以使用这个。
^ [0-9] {1,3}。[0-9] {1,3}。[0-9] {1,3}。[0-9] {1,3} $ >