任何人都可以改善此“ IP地址列表”正则表达式吗?

时间:2018-10-14 08:01:26

标签: c# regex

我已经创建了一个RegEx表达式(通过一些StackOverflow研究),以匹配用逗号分隔的IP地址列表(IPV4和IPV6)。

例如,以下内容可以接受

  • 192.168.1.1
  • 192.168.1.1,10.10.10.10
  • :: 1,192.168.1.1
  • :: 1

我有一个无法解决的表达式问题(这可能是我创建的最复杂的表达式)。该表达式当前允许地址之间不使用逗号分隔(由于它如何允许使用可选的尾部逗号)。

((25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)(,\n|,?$))

具有更多“ RegEx Ninja Powers”的人可以帮助我更正上面的表达式,以允许用逗号分隔IPV4和/或IPV6地址链,并且结尾逗号是可选的(或者实际上不接受结尾逗号)

作为参考,正则表达式将在MVC应用程序的客户端验证中使用。

除了帮助我解决上述问题外,我非常感谢对RegEx本身的任何反馈,因为这是我学习的唯一方法!

更新 由于现在已被标记为“重复”,因此我对问题进行了编辑,以包括任何人在搜索中遇到的答案。

以下正则表达式满足上述要求:

^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}))(,((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4})))*$

0 个答案:

没有答案