有人对我的IPv4正则表达式有什么建议吗。这不会完全验证IPv4地址。
IPV4="^(|[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})|"
1.1.1.1是可以的,但999.1.1.1也验证了:(
感谢输入
*更新*
根据DopeGhoti的输入,以下是我目前的情况。我遇到了将其添加到我的大型正则表达式中的问题。我将这个正则表达式设置为一个变量,然后将其与另一个IPv6表达式相结合。我在正则表达式中添加了一些内容。例如(|在此处插入DopeGhoti regex)。这也允许我接受一个空的IPv4地址。我还在末尾添加了一个\|,因为一个大正则表达式检查的两个地址是|分隔的。
IPV4="^(|(?:(?: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]?)))|"
REGEX="$IPV4$IPV6"
这个过程与我的simplier IPv4正则表达式一起工作。新正则表达式中的某些内容正在破坏它。
*更新*
好吧,奇怪。我在卢布中测试了以下内容:
http://rubular.com/r/c6J3sESDyN
^(|(?:(?: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]?)))|$
这似乎奏效了。也许我有另一个内部问题。正在检查。
你试过逃离点字符吗?
# ^([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})
^
(
[0-9]{1,3} . [0-9]{1,3} . [0-9]{1,3} . [0-9]{1,3}
)
您可以尝试(?:(?: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]?))
。
后更新:
如果合并的正则表达式在单独工作时失败,那么您可以尝试提取这两个表达式中的每一个,然后使用进行测试
egrep "(${IP4PATTERN}|${IP6PATTERN})" /path/to/file