有没有办法使用正则表达式和php检查有效的host:port
组合?
正则表达式必须确保:
host
是一个有效的IP(包含4个1-3位数字,以3个点分隔,数字范围为1-255):
port
是0到65535之间的有效数字有效组合的示例:
95.241.1.5:5423
2.8.5.2:65532
无效组合的示例:
1的 2345 .12.1:5441
15.852.32.455:的 151896841
65.112.15.32:的 48trololo
答案 0 :(得分:6)
^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]):(?:6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$
应该可行,但是尝试将数字与正则表达式匹配并不是很好......
详细格式,更具可读性:
^
(?:
(?:
25[0-5]| # 250-255
2[0-4][0-9]| # 200-249
1[0-9][0-9]| # 100-199
[1-9]?[0-9] # 0-99
)
\. # .
){3} # three times, last segment follows (no dot)
(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])
: # :
(?:
6553[0-5]| # 65530-65535
655[0-2][0-9]| # 65500-65529
65[0-4][0-9]{2}| # 65000-65499
6[0-4][0-9]{3}| # 60000-64999
[1-5][0-9]{4}| # 10000-59999
[1-9][0-9]{1,3}| # 10-9999
[0-9] # 0-9
)
$