确定一下ip地址可输入范围0-255,最大允许输入格式:255.255.255.255
正则校验255 以内的数字,可以做两部分校验;0-199的范围,以及200-255的范围
0-199:
首位是0,1中的一个,正则写法 [0-1]? ?表示匹配0或者1次,等价于{0,1}
后边99的范围,正则写法 \d{0,2} \d等价于[0-9]
完整写法:[0-1]? \d{0,2}
200-255:
首位固定为2,
后两位需要继续给他拆分0-49,50-55
0-49 正则写法 [0-4]\d
50-55 正则写法 5[0-5]
完整写法:2[0-4]\d|25[0-5]
整个255正则匹配:
(2[0-4]\d|25[0-5])|[0-1]? \d{0,2}
整个ip的匹配:
/^((2[0-4]\d|25[0-5])|[0-1]? \d{0,2})(\.((2[0-4]\d|25[0-5])|[0-1]? \d{0,2})){3})$/g
端口号:
最大可输入端口号为65535,同样的思路先来拆分:0-59999,60000-64999,65000-65499,65500-65529,65530-65535
0-59999:
首位0-5,正则写法 [0-5]?,剩余0-9999,正则写法\d{0-4} 完整写法:[0-5]?\d{0,4}
60000-64999 首位6,第二位0-4,剩余0-999 正则写法:6[0-4]\d{3}
65000-65499 正则写法:65[0-4]\d{2}
65500-65529 正则写法: 655[0-2]\d
65530-65535 正则写法:6553[0-5]
匹配端口完整写法:
/^((6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])|[0-5]?\d{0,4})$/g
ps: 可以写个循环来验证范围内是否匹配成功 string.match(RegExp)