有没有人对我的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。我在正则表达式中添加了一些内容。例如a(| insert DopeGhoti regex here)。这允许我也接受一个空的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"
此过程适用于我简化的IPv4正则表达式。新正则表达式中的某些东西正在破坏它。
*更新*
好奇怪。我在rubular中测试了以下内容:
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 :(得分:1)
你有没有试过逃脱点char?
# ^([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}
)
答案 1 :(得分:0)
您可以尝试(?:(?: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]?))
。
答案 2 :(得分:0)
更新后:
如果合并的正则表达式在单独工作时失败,您可以尝试提取两个表达式中的每一个,然后测试:
egrep "(${IP4PATTERN}|${IP6PATTERN})" /path/to/file