对于IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值。
将0-255用正则表达式表示,可以分成一下几块来分别考虑:
| 取值区间 | 特点 | 正则写法 | 可合并的写法 | 可合并的写法 | 可合并的写法 |
| 0-9 | 一位数,只有个位,取值是0~9 | \d | [1-9]?\d | 1\d{2}|[1-9]?\d | (25[0-5]|2[0-4]\d| 1\d{2}|[1-9]?\d) |
10-99 | 两位数,十位取值1-9,个位取值是0~9 | [1-9]\d | |||
| 100-199 | 三位数,最高位取值为1,十位取值0-9,个位取值0-9 | 1\d{2} | - | ||
| 200-249 | 三位数,最高位取值为2,十位取值0-4,个位取值0-9 | 2[0-4]\d | - | - | |
| 250-255 | 三位数,最高位取值为2,十位取值5,个位取值0-5 | 25[0-5] | - | - |
IP地址格式可表示为:XXX.XXX.XXX.XXX,XXX取值范围是0-255,前三段加一个.重复了三次,在与最后一段合并及组成IP地址的完整格式。
下面给出包含http或https的完整的ip地址检验的java写法,注: http后面的冒号":"和斜杠"/"都不需要转义。
public static boolean isIPLegal(String ipStr){
if(TextUtils.isEmpty(ipStr))
return false;
Pattern pattern = Pattern.compile("^((http|https)://)((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)$");
Matcher matcher = pattern.matcher(ipStr);
return matcher.find();
}版权声明:本文为milanac007原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。