我有一个应用程序,在使用 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 环回地址任意排列的正则表达式?
最佳答案
经过一段时间的摆弄 RegexBuddy (对于测试驱动的正则表达式构建来说,这是一个真正出色的工具),我想出了这个:
^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$
此正则表达式匹配
字符串“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
此正则表达式不匹配
有效的服务器名称
服务器名称
子域名.domain.tld
这些有效的 IPv4 地址
192.168.0.1
10.1.1.123
这些有效的 IPv6 地址
0001::1
死:牛肉::1
::dead:beef:1
关于regex - 什么正则表达式将匹配所有环回地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426171/