我有一个应用程序,必须在使用localhost
,127.0.0.1
,::1
或任何环回地址时警告用户(目标主机用于数据库到数据库)连接不一定在应用程序的环境中)。这很复杂,因为地址如下......
127.1
127.0.01
127.0000.0000.1
127.0.0.254
127.63.31.15
127.255.255.254
0::1
0000::0001
0000:0:0000::01
0000:0000:0000:0000:0000:0000:0000:0001
...将通过消费代码正确解析,并将解析为环回。
什么是正则表达式,它将匹配IPv4和IPv6环回地址的任何排列?
答案 0 :(得分:21)
经过一段时间摆弄RegexBuddy(这是测试驱动的RegEx构建的真正伟大工具),我想出了这个:
^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$
字符串“localhost”
localhost
LOCALHOST
IPv4环回地址的这些排列
127.0.0.1
127.0.0.001
127.0.00.1
127.00.0.1
127.000.000.001
127.0000.0000.1
127.0.01
127.1
127.001
127.0.0.254
127.63.31.15
127.255.255.254
IPv6环回地址的这些排列
0:0:0:0:0:0:0:1
0000:0000:0000:0000:0000:0000:0000:0001
::1
0::1
0:0:0::1
0000::0001
0000:0:0000::0001
0000:0:0000::1
0::0:1
有效的服务器名称
servername
subdomain.domain.tld
这些有效的IPv4地址
192.168.0.1
10.1.1.123
这些有效的IPv6地址
0001::1
dead:beef::1
::dead:beef:1
答案 1 :(得分:4)
如果您不关心证明地址是否有效,那么这应该有效:
/^(127\.[\d.]+|[0:]+1|localhost)$/i