`
tigerl
  • 浏览: 98837 次
  • 性别: 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])$";
       

相关推荐

    android验证ip地址的正则表达式

    基于这些规则,我们可以设计出一个用于验证IPv4地址格式的正则表达式。 ### 正则表达式的构成 给定文件中的正则表达式是: ``` "^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\...

    PHP filter_var 验证邮箱、IP、URL的格式

    验证IP地址可以使用`FILTER_VALIDATE_IP`过滤器,你可以指定IPv4或IPv6的验证规则: ```php $ip = '192.168.1.1'; if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) { echo "IPv4地址格式不...

    java验证邮箱,电话,IP

    ### Java中的正则表达式应用:验证邮箱、电话与IP 在Java开发中,正则表达式(Regular Expression)是一种非常强大的文本处理工具,可以用于模式匹配、搜索、替换等操作。本文将深入探讨如何利用Java中的正则表达式...

    php验证类.zip

    使用前,可能需要根据项目需求对类进行配置,例如设置错误消息模板或调整验证规则。 总之,"php验证类.zip"提供的资源是面向PHP开发者的实用工具,能够帮助他们有效地验证各种类型的数据,提升应用程序的安全性和...

    IP-Guard文件加密权限设置(实例二).docx

    2. **规则配置**:设置IP-Guard规则,使得市场部发往白名单内地址的邮件可自动解密。 3. **安全检查**:定期审查白名单的有效性及安全性,防止非授权人员获得敏感信息。 #### 五、多级审批流程的实现 为了进一步...

    IP地址的正则表达式

    ### IP地址的结构与规则 IPv4地址的格式可以总结为A.B.C.D,其中A、B、C、D分别代表四个十进制数字,每个数字的取值范围为0到255。为了确保IP地址的有效性和正确性,必须遵循以下规则: 1. **数值范围**:每个部分...

    IP网络技术教程IP网络技术教程

    IP协议规定了网络中数据的封装格式以及寻址规则,使得不同网络能够相互通信。 二、IP地址与子网划分 IP地址是网络中每个设备的唯一标识,分为IPv4和IPv6两种版本。IPv4地址由32位二进制组成,通常表示为点分十进制...

    IP识别代码

    判断IP地址的错误区域通常涉及到对IP地址的合法性验证。例如,IPv4地址的每个段都不能超过255,且不能有负数或小数;IPv6地址中不能有非16进制的字符,也不能有连续的冒号。如果IP地址不符合这些规则,就可认定其为...

    IP-Adress.rar_ip adress_判断IP地址

    邮件地址的验证更为复杂,通常涉及更多规则,比如用户名和域名部分的特殊字符限制,以及顶级域名的检查等。在实际应用中,可能需要使用正则表达式或者专门的邮件地址验证库来完成。 在VC++中,你可以使用标准库中的...

    JS验证IP,子网掩码,网关和MAC的方法

    - 在实际应用中,IP地址和子网掩码的校验应遵循标准的IP地址结构规则,网关的范围可能需要根据实际情况进行设定。 - 为了避免XSS(跨站脚本攻击),应当对输入进行适当的编码处理,确保安全性。 通过本篇文章的内容...

    打包多份IP地址与域名详解

    通过阅读“IP地址详解.DOC”、“彻底明白IP地址——IP地址的介绍.DOC”等文档,我们可以更深入地了解IP地址的分类、分配规则以及特殊用途,例如私有IP地址和保留IP地址。而“IP网络安全与设备测试.DOC”则可能涵盖了...

    android自定义IP控件

    总结来说,"android自定义IP控件"是一个便捷的工具,能帮助开发者创建一个遵循IP地址输入规则的UI组件,提供友好的用户体验。通过深入理解其内部实现,我们可以学习到如何在Android中创建和使用自定义控件,以及如何...

    常用正则表达式基本表单验证

    对于输入字段,通过JavaScript可以实时过滤不符合规则的输入: - **全角字符过滤**: - `onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,)"` - `onbeforepaste="clipboardData.setData(text,clipboardData....

    IP地址输入框控件.rar

    这种格式的输入需要特殊的验证和格式化,以确保输入的有效性和一致性。 在Windows或Web应用程序中,开发者通常会使用自定义控件或者利用现有的库来实现IP地址输入框。这样的控件通常具有以下特点: 1. **格式验证*...

    一行代码搞定整站的表单验证js代码

    22. **IP地址验证**:检查输入的是否为有效的IPv4或IPv6地址。 23. **MAC地址验证**:验证物理网络地址的格式。 24. **信用卡号验证**:针对各种信用卡类型(如Visa, MasterCard)进行校验。 25. **车牌号验证**...

    C++ Builder API调用IP控件

    4. 分割和验证IP地址:每次用户键入后,你需要检查输入是否符合IP地址格式。可以使用`GetWindowText`获取当前文本,然后用`strtok`或`std::istringstream`分割字符串成四个部分,并验证每个部分是否在0到255之间。 ...

    正则表达式通常用于两种任务:1.验证,2.搜索/替换。用于验证时,通常需要在前后分别加上^和$,以匹配整个待验证字符串

    2. **IP地址验证** ```regex ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) ``` 该表达式用于验证标准IPv4地址。通过分组和条件表达式来匹配每一段数字的范围。 3. **电子邮件地址验证...

    常用各类验证 正则表达式

    除了上述基本的验证外,还有一些特殊的验证场景需要注意: #### URL验证 URL的验证需要考虑到协议、域名、路径等信息: ```javascript /http[s]?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*([a-zA-Z0-9.,@?^=%&amp;:~+#...

Global site tag (gtag.js) - Google Analytics