正则表达式的使用——匹配手机号码、IP地址实例讲解

一、使用场景

典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。

通过使用正则表达式,可以:

测试字符串内的模式。
例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
替换文本。
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
基于模式匹配从字符串中提取子字符串。
可以查找文档内或输入域内特定的文本。
例如,您可能需要搜索整个网站,删除过时的材料,以及替换某些 HTML 格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。

二、语法
① 非打印字符

② 特殊字符

注:如需要匹配这些特殊字符,需进行”转义”,即在字符前面加个反斜杠字符’ \’。

③ 限定符

④ 定位符

注:定位符不能与限定符一起使用。

正则表达式的菜鸟教程:http://www.runoob.com/regexp/regexp-tutorial.html

正则表达式在线测试工具:http://c.runoob.com/front-end/854

三、实例
① 匹配手机号码

最新手机号码段查询地址:https://www.qqzeng.com/tongji.html

现有手机号码段

移动号段: 134、135、136、137、138、139、147、148、150、151、152、157、158、159、172、178、182、183、184、187、188、198

联通号段:130、131、132、145、146、155、156、166、171、175、176、185、186

电信号段:133、149、153、173、174、177、180、181、189、199

虚拟运营商号段:170

整理上面的手机号码段分析可得:

13开头的第三位数字包含0-9,匹配"13[0-9]"

14开头的第三位数字包含5-9,匹配"14[5-9]"

15开头的第三位数字不包含4的其他9个数字,匹配"15[0-35-9]"

16开头的第三位数字只有6

17开头的第三位数字包含0-8,匹配"17[0-8]"

18开头的第三位数字包含0-9,匹配"18[0-9]"

19开头的第三位数字包含8、9,匹配"19[89]"

其他数字就简单了,只有八位数字,包含0-9,匹配" [0-9]{8}$"或"\d{8}$"

因此,手机号码的正则表达式匹配字符串如下所示:

匹配手机号码段正则表达式:

"^(13[0-9]|14[5-9]|15[0-35-9]|166|17[0-8]|18[0-9]|19[89])[0-9]{8}$"

"^(13[0-9]|14[5-9]|15[0-35-9]|166|17[0-8]|18[0-9]|19[89])\d{8}$"
② 匹配IP地址

IP地址的格式:[0,255].[0,255].[0,255].[0,255]

这里四段的数字都是0-255之间,这个区间可分为五种情况,如下:

一位数时,可为0到9,即[0,9],匹配”\d”或”[0-9]”;

两位数时,十位数为1到9,个位数为0到9,即[10,99] ,匹配”[1-9]\d”;

三位数且百位数为1时,十位数与个位数可为0到9,即[100,199] ,匹配”1\d\d”;

三位数且百位数为2时,十位数为0到4,个位数为0-9,即[200,249] ,匹配”2[0-4]\d”;

三位数且百位数为2时,十位数为5,个位数为0-5,即[250,255] ,匹配”25[0-5]”;

因此,IP地址的正则表达式匹配字符串如下所示:

^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$
--------------------- 
作者:Homilier 
来源:CSDN 
原文:https://blog.csdn.net/Honiler/article/details/78444261 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值