正则表达式的使用——匹配手机号码、IP地址实例讲解
一、使用场景
典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
通过使用正则表达式,可以:
- 测试字符串内的模式。
例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 - 替换文本。
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 - 基于模式匹配从字符串中提取子字符串。
可以查找文档内或输入域内特定的文本。
例如,您可能需要搜索整个网站,删除过时的材料,以及替换某些 HTML 格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。
二、语法
① 非打印字符
② 特殊字符
注:如需要匹配这些特殊字符,需进行”转义”,即在字符前面加个反斜杠字符’ \’。
③ 限定符
④ 定位符
注:定位符不能与限定符一起使用。
正则表达式的菜鸟教程:正则表达式 – 教程 | 菜鸟教程
正则表达式在线测试工具:正则表达式在线测试 | 菜鸟工具
三、实例
① 匹配手机号码
最新手机号码段查询地址:最新数据统计【qqzeng-ip】2022年4月
现有手机号码段
移动号段: 134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 195 198
联通号段:130 131 132 145 146 155 156 166 167 171 175 176 185 186 196
电信号段:133 149 153 173 174 177 180 181 189 190 191 193 199
虚拟运营商号段:162 165 167 170 171
整理上面的手机号码段分析可得:
13开头的第三位数字包含0-9,匹配"13[0-9]"
14开头的第三位数字包含5-9,匹配"14[5-9]"
15开头的第三位数字不包含4的其他9个数字,匹配"15[0-35-9]"
16开头的第三位数字包含5-9,匹配"16[25-7]"
17开头的第三位数字包含0-8,匹配"17[0-8]"
18开头的第三位数字包含0-9,匹配"18[0-9]"
19开头的第三位数字包含8、9,匹配"19[0135689]"
其他数字就简单了,只有八位数字,包含0-9,匹配" [0-9]{8}$"或"\d{8}$"
因此,手机号码的正则表达式匹配字符串如下所示:
匹配手机号码段正则表达式:
"^(13[0-9]|14[5-9]|15[0-35-9]|16[25-7]|17[0-8]|18[0-9]|19[0135689])[0-9]{8}$""^(13[0-9]|14[5-9]|15[0-35-9]|16[25-7]|17[0-8]|18[0-9]|19[0135689])\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])$
正则表达式的使用——匹配手机号码、IP地址实例讲解相关推荐
- python正则匹配ip地址_Python正则表达式匹配ip地址实例
Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...
- python使用正则表达式抽取文件中的IP地址
python使用正则表达式抽取文件中的IP地址 IP正则 r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' 有效IP ((25[0-5]|2[0-4][0-9]|[01] ...
- linux 匹配文本中的ip,linux文本三剑客匹配网卡IP地址大PK(CentOS 7系统)
运维工程师在做配置的过程中很多时候都需要去获取目标服务器网卡上的IP地址,那究竟用什么方式获取更便捷了,博主今天就带大家使用linux文本三剑客分别获取一下网卡的IP地址,最后我们再来对比一下. 实验 ...
- JAVA 获取指定网址的IP地址 实例
如今买票是一大难事,在高峰时段 打开12306网站,慢的像蜗牛,想到以前用修改hosts文件来登录Google(Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址 ...
- 【新星计划回顾】第七篇学习-正则表达式-邮箱、手机、IP地址匹配符号解释
- 正则表达式的用法及手机号码Email地址是否合法身份证号码是否合法邮政编码
正则表达式 (1)正则表达式概念: 正则表达式(regular expression)描述了一种字符串 -regex 匹配的模式,可以用来:校验 (a)检查一个串中是否含有符合某个规则的子串, ...
- [转载]手机号码IP地址归属地查询
详情点击:http://yoursunny.com/work/MobileIPquery/ 注:调用的数据相对比较准确,可将改功能加以改造并应用于本地论坛及门户站的用户注册控制上来,防止恶意注册,控制 ...
- Java使用正则表达式从字符串中提取 IP 地址
import java.util.regex.Matcher; import java.util.regex.Pattern;public class ExtractIP {public static ...
- python正则匹配ip地址_IP地址正则表达式匹配方法,ip正则表达式匹配
IP地址正则表达式匹配方法,ip正则表达式匹配 正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述 ...
最新文章
- 互联网1分钟 | 0114 ZEPETO中文版“崽崽”上线;好未来2B利器未来魔法校全面升级...
- Windows Server 2008 WDS实现跨网段实现远程部署
- linux为什么要交换内存,Linux系统中交换内存是什么?
- mysql id会用完吗_数据库自增ID用完了会怎样?
- EFDC水模型 初学者入门 及软件下载学习指导
- .NET Core应用框架AA介绍(二)
- Excel VBA窗体上打印系统时间print now出错原因及解决方案
- NYOJ-97兄弟郊游问题
- [CodeForces 372A] Counting Kangaroos is Fun
- excel导入sqlserver(asp版)
- 变速齿轮Delphi实现
- Android分步注册,Activity由B返回A修改再前往B,B中已填项不变
- 台湾科技挣扎,人祸大于天灾?
- OSSIM开源安全信息管理系统(六)
- 阈的粤语发音_粤语发音规则完整版
- 延迟满足 —— 达到目标需要忍住重重诱惑
- web自动化_selenium IDE安装与运行总结
- 鲁山企业网络营销信息源类别及传递渠道调查
- Unix时间戳1970Java与Unix时间戳互转
- 二进制数代码进制转换