`
tigerl
  • 浏览: 97145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

特殊规则IP验证

阅读更多
IP校验 不能以0、127及224-255开头;是正确的IP

public class IpReg {
	
	public static void main(String[] args) {
		String s = "225.255.255.255";
		
		boolean b = false;
		//只要捕获到了异常,说明Ip是非法的,根据需要处理异常
		try {
			b = validateIP(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("验证结果为 :"+b);
	}
	
	public static boolean validateIP(String ip){
		boolean b = false;
		String[] ips = ip.split("\\.");
		if(ips.length!=4){
			throw new IllegalArgumentException("Illegal IP ["+ip+"]");
		}
		
		//对第一组进行验证
		String[] ips1 = ips[0].split("");
		if(ips1.length>4){
			throw new IllegalArgumentException("Illegal IP ["+ip+"],String ["+ips[0]+"] given that length must less than 4");
		}
		
		int fip = 0;
		try {
			fip = Integer.parseInt(ips[0]);
		} catch (NumberFormatException e) {
			throw new IllegalArgumentException("Illegal IP ["+ip+"],param ["+ips[0]+"] given must be type of number!");
		}
		//如果没有抛出异常,则全部是数字,进行判断是否合法
		if(fip<0 | fip == 0 | fip == 127){
			throw new IllegalArgumentException("Illegal IP ["+ip+"], can not begin with "+fip);
		}else{
			b = true;
			for(int i=224;i<=255;i++){
				if(fip==i){
					throw new IllegalArgumentException("Illegal IP ["+ip+"], can not begin with "+fip);
				}
			}
		}
		//对剩下的三组进行验证
		boolean b2 = validate(ips[1]);
		boolean b3 = validate(ips[2]);
		boolean b4 = validate(ips[3]);
		
		return b&b2&b3&b4;
	}
	
	private static boolean validate(String subip){
		String[] ips = subip.split("");
		if(ips.length>4){
			throw new IllegalArgumentException("Illegal IP ["+subip+"],String ["+subip+"] given that length must less than 4");
		}
		Integer ip = null;
		
		try {
			ip = Integer.parseInt(subip);
		} catch (NumberFormatException e) {
			throw new IllegalArgumentException("Illegal IP ["+subip+"],param ["+ips[0]+"] given must be type of number!");
		}
		//如果没有抛出异常,则全部是数字,进行判断是否合法
		if(ip<=255 && ip>-1){
			return true;
		}else{
			throw new IllegalArgumentException("Illegal IP ["+subip+"],param ["+subip+"] given that must less than 256 and great than -1");
		}
	}
}


由于对正则表达式不熟悉,以及时间原因,所以上面这是比较笨的方法,解决问题还是得自己细心,用心,精心,好多问题真的是只要自己稍微花点时间用下心,用点时间,用点力就可以解决得了!下面是正则表达式:
String str_pattern = "^(((?!127)([1-9]|[1-9]\\d|1\\d\\d|2[0-1]\\d|22[0-3]))\\.)(([0-9]|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){2}([0-9]|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$";
Pattern pattern = Pattern.compile(str_pattern);
String ip ="127.127.127.245";
Matcher m = pattern.matcher(ip);
boolean b = m.find();
if(b){
    System.out.println(m.group());
}else{
    System.out.println(b);
}
2
2
分享到:
评论
4 楼 tigerl 2012-01-05  
直接用正则表达式也可以,但是写正则表达式比较麻烦,测试也麻烦,不是所有的验证都需要正则表达式!只要能满足需求,又不影响性能,写什么都可以!
3 楼 jyjava 2012-01-05  
直接用正则表达式,减去所有麻烦,再说你这个该是前台用js吧
2 楼 tigerl 2012-01-05  
你验证过你的正则表达式吗?我是验证如下的:
IP校验 不能以0、127及224-255开头;是正确的IP
1 楼 gaowei52306 2012-01-05  
正则表达式:IP校验
        String strPattern =
            "^(([0-9]|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.)" + "{3}([0-9]|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$";
       

相关推荐

    TCP.IP路由技术[第二卷](CCIE职业发展系列).pdf

    中文名: TCP.IP路由技术[第二卷](CCIE职业发展系列) 原名: Routing TCP.IP,Volume 2 作者: Jeff Doyle译者: 毕立波资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115100962发行时间: 2002年 地区: ...

    java_用于App验证数据验证的工具类的标准代码_android

    验证IP地址是否正确 验证URL地址是否正确 验证是否是正整数 验证是否是小数 验证是否银行卡号 验证身份证号码是否正确 判断是否为用户名账号(规则如下:用户名由下划线或字母开头,由数字、字母、下划线、点、减号...

    《数字IC设计:方法技巧与实践》唐杉,徐强,王莉薇 著

    芯片设计的特殊考虑 芯片制造商和工艺的选择 设计的层次化 时序闭合性设计 可调试性设计 可测性设计 可验证性设计 低功耗设计 封装和引脚 制定构架(或功能)规范 制定功能验证计划 功能验证的基本概念和方法 随机...

    rfc中文文档目录,包含部分翻译

    RFC2330 IP 执行规则的管理 RFC2343 应用于捆绑的MPEG的RTP有效载荷的格式 RFC2344 移动IP反向隧道 RFC2349 TFTP 休息间隔和传输大小选项 RFC2367 PF_KEY键管理 API,版本 2 RFC2372 处理Internet协议(TIP)-要求...

    中文版RFC,共456

    RFC2330 IP 执行规则的管理 RFC2343 应用于捆绑的MPEG的RTP有效载荷的格式 RFC2344 移动IP反向隧道 RFC2367 PF_KEY键管理 API,版本 2 RFC2372 处理Internet协议(TIP)-要求和补充信息 RFC2373 IPv6寻址体系结构 RFC...

    RFC中文文档-txt

    RFC2330 IP 执行规则的管理 RFC2343 应用于捆绑的MPEG的RTP有效载荷的格式 RFC2344 移动IP反向隧道 RFC2367 PF_KEY键管理 API,版本 2 RFC2372 处理Internet协议(TIP)-要求和补充信息 RFC2373 IPv6寻址体系结构 RFC...

    18.C#字符串和正则表达式参考手册 影印版

    7.5.1 验证IP地址 182 7.5.2 验证域名 182 7.5.3 验证个人地址 183 7.5.4 验证完整的地址 184 7.6 分析SMTP日志文件 185 7.7 HTML标记 196 7.7.1 从用户输入中清除HTML 197 7.7.2 提取所有HTML标记 198 7.7.3 HTML...

    citrix 中文管理操作手册

    禁用服务器上所有已发布应用程序的命令行验证 42 配置已发布内容的位置 43 配置内容重定向 43 将内容从客户端重定向到服务器 43 配置从客户端到服务器的内容重定向 44 配置内容重定向时使用客户端设备上的 Windows ...

    Squid中文权威指南

    6.3.6 授予某些用户特殊的访问 6.3.7 阻止邻近cache的滥用 6.3.8 使用IP地址拒绝请求 6.3.9 http_reply_access示例 6.3.10 阻止对本地站点的cache命中 6.4 测试访问控制 第7章 磁盘缓存基础 7.1 cache_...

    JS常用校验

    * matchPattern(value,mask) //自定义规则,mask为正确的正则表达式,返回通过自定义验证的字符串 * isEnglish(name) //判断是否为英文,正确返回ture,否则返回false * isChinese(name) //判断是否为中文,正确返回 ...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    13.5数据库特殊情况的恢复 13.5.1联机Redo日志损坏与恢复 13.5.2数据文件脱机与恢复 13.5.3表空间脱机与恢复 13.6本章小结 第14章 RAC安全性 14.1数据访问安全性 14.1.1 Oracle安全性解决方案 14.1.2 VPD和...

    ASP.NET3.5典型模块开发源代码

    4.2.3 验证IP和登录时间 41 4.2.4 小范围调查 42 4.3 一个完整的投票系统 42 4.3.1 投票系统的功能模块 42 4.3.2 投票系统的数据库架构 43 4.3.3 数据库中数据之间的关系 43 4.3.4 投票主题管理 44 ...

    Winson.Framework 1.0发布!

    可根据需要显示各种提示框 8、支持URL重写,可自定义重写规则,同时还可以限制IP访问,需修改XML配置文件 9、Xml文件操作类库,基本上已可满足常用的XML操作需要 &lt;br&gt;三、经常需要使用的一些验证逻辑与方法...

    关于计算机数据库系统设计方案.doc

    关于计算机数据库系统设计方案 摘要:下文主要根据笔者多年工作经验就关于计算机数据库系统设计...编辑公司所在的 IP 段,查看所有用户的状态,进行活动管理,即添加、编辑活动,设定活动规则。应用系 统需要响应用户

    22春“计算机科学与技术”专业《计算机网络》在线作业含答案参考8.docx

    16. 包过滤是有选择地让数据包在内部与外部主机之间进行交换,根据安全规则有选择的路由某些数据包。下面不能进行包过滤的设备是( )。 A.路由器 B.一台独立的主机 C.交换机 D.网桥 参考答案:C 22春"计算机科学与...

    sqlserver2000基础(高手也有用)

    3.4.3 IP地址处理 72 3.5 字符串分拆与合并处理应用实例 74 3.5.1 字符串比较 74 3.5.2 字符串交集/并集 75 3.5.3 分拆字符串并统计 78 3.5.4 借用字符串实现无规律排序 82 3.5.5 列车车次查询 82 3.6...

    网络安全漏洞及防范措施探究.doc

    网 络主要以TCP/IP协议为基础,从网络协议的安全性来看,TCP/IP本身就存在一些特殊 缺陷,无法有效控制漏洞的产生。TCP/IP协议不能正确判断IP的实际来源,这是一个非 常大的安全漏洞。一些别有用心的不法分子采取...

    防火墙与网络安全.pptx

    是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包...

Global site tag (gtag.js) - Google Analytics