java正则表达式校验 ip

Python020

java正则表达式校验 ip,第1张

你直接用matchs判断就可以了,matcher是只要内部有能匹配上的就算满足,不是判断整体。

String rexp = "([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}"

String addr = "11111.1.1.1"

System.out.println("1.1.1.1".matches(rexp))

System.out.println("11.1.1.1".matches(rexp))

System.out.println("111.1.1.1".matches(rexp))

System.out.println("11111.1.1.1".matches(rexp))

true

true

true

false

^(([1-9]{1}\d*)|(0{1}))(\.\d{2})$万

楼主是要必须等于"8.20万"? 如果是这样根本不用正则,直接使用"8.20万".equls()方法就可以了.

如果楼主意思是校验8.20万这种整数后面带两位小数的字符串的话,使用上面的正则就可以了

目前仍没有人解决1、3、5、7、8、10、12月是31天的大月问题呀

(我本是1楼)如果用正则去验证“数值”,会很舍近求远,不是正则的强项。需要写很多的“向后断言”。效率会一般甚至很低。(目前我看到的上下楼的都是有漏洞的,没法检验闰月和大小月)

我所不取。

我一直用的这个:

static public boolean isValidDate(

int year, int mon, int day,

short year_min,short year_max,

StringBuffer msg)

{

if(year<year_min || year>year_max)

{

msg.append("年份必须在("+

year_min+"~"+year_max+

")之间,输入值("+year+")无效\n")

return false

}else{//

switch(mon){

case 1:case 3:case 5:case 7:case 8:case 10:case 12:{

if(day<1 || day>31){

msg.append("日号必须在(1~31)之间,输入值("+day+")无效\n")

return false

}

}break

case 2:{

if(isLeapYear(year) &&day>29){

msg.append("闰年的闰二月日号必须在(1~29)之间,"+year+"是闰年,输入值("+day+")无效\n")

return false }else if(day>28){

msg.append("非闰年的闰二月的日号必须在(1~28)之间,"+year+"不是闰年,输入值("+day+")无效\n")

return false

}

}break

case 4:case 6:case 9:case 11:{

if(day<1 || day>30){

msg.append("日号必须在(1~30)之间,输入值("+day+")无效\n")

return false

}

}break

default:{

msg.append("月份必须在(1~12)之间,输入值("+mon+")无效\n")

return false

}

}

}

return true

}

static public boolean isLeapYear(int year){

return (year%4==0 &&year%100!=0)|| year%400==0

}

包好。