我已经创建了一个RegEx表达式(通过一些StackOverflow研究),以匹配用逗号分隔的IP地址列表(IPV4和IPV6)。
例如,以下内容可以接受
我有一个无法解决的表达式问题(这可能是我创建的最复杂的表达式)。该表达式当前允许地址之间不使用逗号分隔(由于它如何允许使用可选的尾部逗号)。
((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})))*$