验证字符串是否为有效的IP地址
来源:互联网 发布:长门号战列舰模型淘宝 编辑:程序博客网 时间:2024/05/18 16:37
IPV4地址由4个组数字组成,每组数字之间以.分隔,每组数字的取值范围是0-255。IPV4必须满足以下四条规则:
- 任何一个1位或2位数字,即0-99;
- 任何一个以1开头的3位数字,即100-199;
- 任何一个以2开头、第2位数字是0-4之间的3位数字,即200-249;
- 任何一个以25开头,第3位数字在0-5之间的3位数字,即250-255。
这样把规则全部罗列出来之后,构造一个正则表达式的思路就清晰了。
- 首先满足第一条规则的正则是:\d{1,2}
- 首先满足第二条规则的正则是:1\d{2}
- 首先满足第三条规则的正则是:2[0-4]\d
- 首先满足第四条规则的正则是:25[0-5]
把它们组合起来,就得到一个匹配0-255数字的正则表达式了: (\d{1,2})|(1\d{2})|(2[0-4]\d)|( 25[0-5])
IPV4由四组这样的数字组成,中间由.隔开,或者说由三组数字和字符.和一组数字组成,所以匹配IPV4的正则表达式如下: (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])) 。
方法如下:
/// <summary> /// 验证一个字符串是否为IPV4 /// </summary> /// <param name="ip">要验证的字符串</param> /// <returns>返回结果,是IPV4返回true,不是IPV4返回false</returns> private bool IsCorrectIP(string ip) { string pattrn = @"(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))"; if (System.Text.RegularExpressions.Regex.IsMatch(ip, pattrn)) { return true; } else { return false; } }
这个正则有一个缺陷,就是如果不使用边界匹配的话,像字符串 255.255.0.256也会被匹配到,匹配到的结果是255.255.0.25。可以添加限制条件,前后要么是边界,要么是非数字,并且使用前后查找(lookaround)。即: (?<=(\\b|\\D))(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))(?=(\\b|\\D)) 。
所以方法如下:/// <summary> /// 验证一个字符串是否为IPV4 /// </summary> /// <param name="ip">要验证的字符串</param> /// <returns>返回结果,是IPV4返回true,不是IPV4返回false</returns> private bool IsCorrectIP(string ip) { string pattrn = "(?<=(\\b|\\D))(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)" +"|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)" +"|(25[0-5]))(?=(\\b|\\D))"; if (System.Text.RegularExpressions.Regex.IsMatch(ip, pattrn)) { return true; } else { return false; } }
扩展
验证字符串能否转换成有效端口号:
/// <summary> /// 验证字符串是否可转换成有效的端口号 /// </summary> /// <param name="port">字符串</param> /// <returns>返回结果,能转换返回true,不能转换返回false</returns> private bool IsCorrectPort(string port) { try { int p = int.Parse(port); if (p>65535||p<0) { return false; } else { return true; } } catch (Exception) { return false; } }
0 0
- 验证字符串是否为有效的IP地址
- 判断IP 字符串是否为有效地址
- shell 判断字符串是否为有效ip地址
- 在shell中如何判断字符串是否为有效的IP地址
- js验证ip地址是否有效
- 如何判断字符串是否是有效的的IP地址
- 判断是否是有效的IP地址
- 如何判断一个字符串是否为正确的IP地址
- 判断输入的字符串是否为ip地址
- 判断字符串是否为合格的IP地址
- 判断字符串是否为IP地址。
- c# 判断字符串是否为IP地址
- 判断字符串是否为IP地址
- 判断字符串是否为IP地址
- 数字字符串是否为合法IP地址
- java代码检查是否为有效ip地址
- java代码检查是否为有效ip地址
- 验证是否为有效的邮件格式
- Search in Rotated Sorted Array II - Leetcode
- 我的学习之旅(37) sched.c
- 5.php内置MySQL函数学习
- HttpStatus 404
- jstl/jsp--el 判断为空
- 验证字符串是否为有效的IP地址
- 素数筛
- sap权限维护操作手册
- Android下添加新的自定义键值和按键处理流程
- VLAN\VTP\HSRP综合实验(真机测试通过)
- 关于客户端与服务端时区不同导致客户端上的时间不准问题的解决方案
- Virtualbox中安装Linux系统的教训
- 学而不思则罔,思而不学则殆
- codeforce Ilya and Roads (区间dp)