【发布时间】:2014-01-21 14:22:04
【问题描述】:
我将如何修改我编写的这个 IPv6 正则表达式以检测地址(即现在编写正则表达式的方式),但也接受“空白”,即用户没有指定 IPv6 地址?
^[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}$
现在,正则表达式正在寻找至少 0:0:0:0:0:0:0:0 或类似的值。事实上,除了空白地址之外,我可能还需要能够处理压缩,例如以下地址:
FE80::1
or ::1
etc
谢谢!
* 更新 *
所以让我确保我有这个直...
(^$|^IPV4)\|(^$|IPV6)\|REST OF STUFF$
这似乎不对。我觉得我放错了 ^ 和 $ 以及整个正则表达式的开头和结尾。
也许是这样:
^(^$|IPV4)\|(^$|IPV6)\|REST$
* 更新 *
仍然没有运气。这是我的代码的一部分,为了保持理智,中间被砍掉了:
^(|[0-9]{1,3}.<<<OMIT MIDDLE IPV4>>>.[0-9]{1,3})\|(|(\A([0-9a-f]{1,4}:){1,1}<<<OMIT MIDDLE IPV6>>>[0-1]?\d?\d)){3}\Z))\|[a-zA-Z0-<<<MORE STUFF MIDDLE OMITTED>>>{0,50}$
我希望这不会令人困惑。这是每个正则表达式的开头和结尾,中间省略了,因此您可以看到 ( )。
也许我需要将整个巨大的 IPV6 正则表达式括在括号中?
* 更新 *
尝试了上面的最后一条语句......没有运气。
【问题讨论】: