日期:2014-05-20  浏览次数:20825 次

正则表达式判断ip
为何下面的不能正确判断ip地址格式是否正确
		
                String chekString="[1-255]\\.[0-255]\\.[0-255]\\.[0-255]$";
String ip="192.168.1.1";
if (ip.matches(chekString))
{
System.out.println("是一个正确的ip");

}
else
{
System.out.println("不是一个正确的ip");
}

运行结果是:不是一个正确的ip
------解决方案--------------------
正则表达式中是按照字符去单个匹配的,匹配内容都会看作是单个字符.[1-255]这种写法会被认为是,1到2的所有数字表示的字符,以及为5的字符都会被配匹.所以
[1-255]\\.[0-255]\\.[0-255]\\.[0-255]$这个表达式能匹配的是
125.0125.0125.0125(每个点隔开的数字中有且只能有一个).如 1.0.1.2 这样的格式.
楼主可以参考这个表达式
([1-9])
------解决方案--------------------
([1-9][0-9])
------解决方案--------------------
(1[0-9][0-9])
------解决方案--------------------
(2[0-4][0-9])
------解决方案--------------------
(25[0-5]) 匹配(1-255)
把第一个1改成0就可以匹配 0-255 了.