正则表达式IPv6验证和可选的方括号?

问题描述:

大家好所有正则表达式新手在这里。,正则表达式IPv6验证和可选的方括号?

我想写一个验证IPv6地址的正则表达式。我还没有添加端口部分,我想先获取地址部分。

这是我到目前为止有:

\\[?(?:[:0-9A-Fa-f]+)\\]? 

这使得开启和关闭支架可选。但正如你所看到的,他们是独立的可选项。是否有正则表达式要求开放和结束括号既不

正则表达式是一个很好的字符串模式匹配工具,但是您在这里遇到了一个弱点。匹配成对的括号会变得棘手。

在更复杂的情况 - 即试图读取程序代码时 - 该解决方案是不使用正则表达式可言,而是利用正确的代码分析器。

即使是相当简单的情况下,可能会非常棘手回答,因为涉及的正则表达式语法,可以说是相当毛茸茸的,还因为更先进的正则表达式的功能就是这样,不同的实现可以使用不同的语法。 This question可能会提供一些提示,说明如何使用它以及可能使用的不同语法。

然而,在你的情况下,这个问题是不是太复杂了,一个相当简单的解决方案提出了自己:只要有需要两个支架或支架都不整个表达式整个表达式匹配。换句话说,重复你表达的主要部分两次,一次用支架,一次不带,并为他们之间or管道:

\(\[(?:[:0-9A-Fa-f]+)\])|(?:[:0-9A-Fa-f]+)\ 

希望有所帮助。

+0

经过一番调查后,我得出了同样的结论,我只需要复制那部分正则表达式。谢谢你的协助! – 2012-04-16 20:45:06