bash中的IPv4正则表达式



有人对我的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

相关内容

  • 没有找到相关文章

最新更新