写出ip地址的正则表达式的思路
来源:互联网 发布:linux 不能创建目录 编辑:程序博客网 时间:2024/05/21 22:26
首先,我们先分析一下ip地址的一些基本情况,如下
1、1到3位
2、有三位时,百位最大为2
3、百位最大为2时,十位最大为5
4、百位最大为2时,十位最大为5时,个位最大为5
5、前三个数后有一点.
先写出满足这样的一个数
一位 [1-9]
二位 [1-9]\d
三位1开头 1\d{2}
三位2开头第二位不是5 2[0-4]\d
三位2开头第二位是5 25[0-5]
用了[]、\d、{}三种符号
很明显,以上都是或的关系
接着,我们将他组合起来,那么满足ip要求的一个数就是
[1-9]|([1-9]\d)|(1\d{2})|(2[0-4]\d)|(25[0-5])
这里引入了|、()两个符号
前3个还有一点
(([1-9]|([1-9]\d)|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}
这\.是一个转义,代表了字符.
在加上最有一个数就是
(([1-9]|([1-9]\d)|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}([1-9]|([1-9]\d)|(1\d{2})|(2[0-4]\d)|(25[0-5]))
写出以上正则后,测试了一下
发现对于111.111.111.111匹配出来是111.111.111.1
于是我们将位数多匹配放到前面去,让他先找位数多的匹配,于是变成如下
(((25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]\d)|[1-9])\.){3}((25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]\d)|[1-9])
再测一下,发现1131.111.111.111也能匹配为131.111.111.111,于是我们我们需要给他规定一下单词边界,查一查正则的文档,用\b可以办到,变成如下
(((\b2[0-4]\d\b)|(\b25[0-5]\b)|(\b1\d{2}\b)|(\b[1-9]\d\b)|\b[1-9])\b\.){3}(\b(2[0-4]\d\b)|(\b25[0-5]\b)|(\b1\d{2}\b)|(\b[1-9]\d\b)|\b[1-9]\b)
这样就没有什么问题了
就这样了,写正则思路最重要,合理的进行情形分解,不断完善
以上实际已经能满足我的需求了,更严格一点,111.11.111.111.,在最后带一点的字符串也能匹配出来,我们不想他匹配,因此要对文本边界做限制,查看文档,$可以办到
于是在最后加上$即可
(((\b2[0-4]\d\b)|(\b25[0-5]\b)|(\b1\d{2}\b)|(\b[1-9]\d\b)|\b[1-9])\b\.){3}(\b(2[0-4]\d\b)|(\b25[0-5]\b)|(\b1\d{2}\b)|(\b[1-9]\d\b)|\b[1-9]\b)$
同理。
.11.111.111.11
这样前面有边界符的还能匹配,这个我们该怎么改呢 :-)
- 写出ip地址的正则表达式的思路
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- IP地址的正则表达式
- ip地址的正则表达式
- 检查IP地址的正则表达式
- 一个匹配IP地址的正则表达式
- 检测ip地址是否合法的正则表达式
- 匹配IP地址的正则表达式实例
- 检测IP地址的正则表达式
- 检测IP地址的正则表达式
- 【C#】校验IP地址的正则表达式
- 验证ip地址的正则表达式
- 黑马程序员_基础加强(一)
- 命令行打开Windows常用系统设置窗口
- xcode5 cpu %100
- Web前端研发工程师编程能力飞升之路
- 蓝桥杯基础练习 字母图形
- 写出ip地址的正则表达式的思路
- 黑马程序员_基础加强(二)
- 教你一步一步用c语言实现sift算法
- 最常见的电脑数据恢复软件有几种
- 检测获取访问这的一个QQ接口
- 黑马程序员_交通灯管理系统
- Struts2 的国际化实现
- Linux 中 x86 的内联汇编
- c++中如何实现事务