关于网络上IP地址校验正则表达式的一点缺陷
来源:互联网 发布:node.js 生成pdf 编辑:程序博客网 时间:2024/06/10 03:25
网络上常见的代码如下:
static boolean isIpAddress(String s){
String regex = "(((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d)).(((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d))
.(((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d)).(((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d))";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
return m.matches();
}
经过测试,发现像“1.1.112”这样不合法的IP也可以通过校验
对0~255的校验“((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d)”,这段代码应该没问题了,问题就出在对“.”的处理上,于是,改成如下:
static boolean isIpAddress(String s){
String regex = "(((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d))[.](((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d))
[.](((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d))[.](((2[0-4]//d)|(25[0-5]))|(1//d{2})|([1-9]//d)|(//d))";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
return m.matches();
}
成功!!!
- 关于网络上IP地址校验正则表达式的一点缺陷
- 【C#】校验IP地址的正则表达式
- IP地址的正则表达式校验
- 正则表达式校验IP地址
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- ip地址的正则表达式
- Android 校验IP的正则表达式
- Java校验IP的正则表达式
- 关于Python正则表达式匹配IP地址
- 黑马程序员_Java基础_正则表达式,校验QQ号,手机号,邮箱,IP地址排序,网络爬虫
- IP地址正则表达式
- 有趣的linkButton与 Button样式
- .Net框架下的XSLT转换技术简介[网淘]
- 上一次你是来面试的,现在已经是正式员工了
- Perl (三)-控制结构
- 老老实实做人,踏踏实实做事
- 关于网络上IP地址校验正则表达式的一点缺陷
- 盲人可以踢足球,我们还惧怕什么不能做呢!
- 从存储过程中读取参数设置
- 硬币称重
- typeof 运算符
- 用ASP.NET上传大文件
- Google的开源自动化测试框架
- DataGridView新特色
- asp 拼音 汉字