700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JAVA IP地址格式验证 使用正则表达式

JAVA IP地址格式验证 使用正则表达式

时间:2019-04-30 12:23:30

相关推荐

JAVA IP地址格式验证 使用正则表达式

正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

元字符

由于 \ 和 " 或者 ’ 组合无法显示出来,所以下面的内容尽可能的加了一个空格。还有 | 这个字符也是无法显示出来,用 l 代替了。

当然不止上面那么少的元字符,只列出来用到的,还有很多元字符,包括普通字符、非打印字符、特殊字符、限定符、定位符等。如果想要了解更多关于这方面的知识,可以点这里。正则表达式 - 教程

JAVA IP地址格式验证

首先需要了解IP地址的数字范围:

A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。

A类IP地址范围:1.0.0.1-126.255.255.254

B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。

B类IP地址范围:128.1.0.1-191.254.255.254

C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。

C类IP地址范围:192.0.1.1-223.255.254.254

D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。

D类IP地址范围:224.0.0.1-239.255.255.255

特殊的网址:

每一个字节都为0的地址(“0.0.0.0”)对应于当前主机IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器网络ID的第一个6位组也不能全置为“0”,全“0”表示本地网络

好了,入正题。根据上面所列出来的IP地址范围,去掉0.0.0.0这个特殊的主机地址,然后就可以确定第1段地址数值范围1-255,第2、3、4段地址数值范围0-255。

将第1段分成5部分:1 - 9 ,10 - 99, 100 - 199, 200 - 249, 250 - 255。

So,将上面的正则表达式用 | 连起来就是第1段地址的正则表达式:

([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])

第2、3、4段地址拆分其实跟第1段差不多,有两个不同的地方:①数值可以为0;②将"."放到第2、3、4段地址前面。

还有".“的正则表达式:”\."

So,将上面的正则表达式用 | 连起来就是第2、3、4段地址的正则表达式:

(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])

由于将"."加到了地址前面,所以正则表达式为:

(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]))

由于第2、3、4段地址数值范围是一样的,所以正则表达式为:

(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}

Just do it!将上面第1段和2、3、4段正则表达式连起来就是IP地址的正则表达式了:

^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}$

以"^“开始,以”$"结束。

JAVA代码实现:

public static boolean isValidIPAddress(String ipAddress) {if ((ipAddress != null) && (!ipAddress.isEmpty())) {return Pattern.matches("^([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}$", ipAddress);}return false;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。