我发现的正则表达式数字范围生成器为0 .. 255
0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])
和1 .. 65535
:
0*([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[ 0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])
首先,您的 IP 地址正则表达式可以缩短为
(?:0*(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])(? :\.|\b)){4}
所以表达式的一般结构是
OCTET_EXPRESSION ::= 0*(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])
PORT_EXPRESSION ::= 0*(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9] {3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])
(
(?:
OCTET_EXPRESSION
(?:\.|\b)
){4}
)
(
(?:
:
PORT_EXPRESSION
)?
)
给出两组(IP 和端口,如果适用)。
^((?:0*(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]) (?:\.|\b)){4})(?::(0*(?:[1-9][0-9]{0,3}|[1-5][0-9] {4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0- 5])))?$
http://rubular.com/r/IPNJrTp06y
如果可以,请使用小型解析器。在任何编程语言中,拆分.
并:
检查结果数字范围的有效性都是很重要的。