最近在开发项目时遇到了需要验证多个IP地址的情况,于是想用正则表达式来解决问题,在网上搜了很多,大部分都是单个IP地址的正则验证,或者是有多个IP地址验证,但并不严谨,于是我结合了一下,并通过不停的测试,最后得到了以下这个算是比较严谨,并可以验证多个IP的正则表达式了:
(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(\\s*,\\s*(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3})*
解释一下:
(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])就是单独的三位以内数字,范围限定在0-255
(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}就是“.”+三位以内数字,后面的{3}为重复三次,加上上面的组成了一个完整的IP地址,这一部分可以用做验证单个IP
(\\s*,\\s*(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3})* 这部分完全Copy了上一部分,区别在于\\s*,\\s* 用作验证“,”分隔,\\s*是允许逗号前后有空格存在,最后部分的*号表示可以重复,也就可以进行多IP验证了。
测试方法相信大家都会写:
相信大家自己试一下就知道了。