正则 数字长度不大于位数字_正则表达式使用

正则表达式是文本搜索的一个利器,掌握它定会提高你的工作效率。

要使用正则表达式就必须知道有哪些元字符以及它们所代表的意义,这里我就不再对每个元字符做说明了,假设你已经了解了这些知识,如果还不了解可以参考网上的一些资料。

以下所有示例用的是一个在线的正则表达式测试工具来验证的,地址是 https://tool.oschina.net/regex/

1、匹配指定数量字符

比如11位的手机号:[0-9]{11},匹配结果如下图:

4110a1dabda1210159976550730a73ab.png

匹配指定数量字符

大括号里的数字表示重复前面匹配的数量,有以下几种写法

  1. {k} 表示重复次数k
  2. {m,} 表示重复次数不小于m
  3. {,n} 表示重复次数不大于n
  4. {m,n} 表示重复次数不小于m且不大于n

我用的这个测试工具不支持上面四种所有写法,只支持1,2,4这三种写法

2、匹配至少1个字符

比如匹配数字与字母相互交叉文本中的所有字母部分:[a-zA-Z]+,匹配结果如下图:

41f3ba58d5bfdc6056530e46b83498a6.png

匹配至少1个字符(图1)

这种写法与[a-zA-Z]{1,}等效,得到同样结果,如下图所示:

ba9cfa8f9e4fb8f28549c83f0c0b3e6f.png

匹配至少1个字符(图2)

还有一个可以表示匹配数量的元字符是*,不过它表示大于等于0个匹配,也就是说以下这种写法[a-zA-Z][a-zA-Z]* 也与 [a-zA-Z]+ 是等效的,得到同样结果,如下图所示:

823220a691db52894ce0e833a9299776.png

匹配至少1个字符(图3)

3、匹配另一个正则表达式结果指定数量的文本

这种匹配其实与前两种写法上没有多大区别,唯一的区别就是需要重复的文本不再是单个字符,而是其它正则表达式匹配的结果,比如匹配ip地址:([0-9]{1,3}.){3}[0-9]{1,3},匹配结果如下图:

342188ca48684b139ea5bccb264c2880.png

4、引用前一个正则表达式匹配结果

通过的方式可以引用第n个分组,比如查找不相邻的两个重复的单词:([a-zA-z]{5,}).+1,匹配结果如下图:

e4f98c5710a37dfa5df2af31580d3b3e.png

5、匹配开头是指定字符的文本

比如匹配开头是数字的文本:^[0-9]+,匹配结果如下图:

1df78d762936d0d36becd94ffa3ea194.png

6、匹配结尾是指定字符的文本

比如匹配结尾是数字的文本:[0-9]+$,匹配结果如下图:

b6967bf50d3b9f6ec94955991a1bac78.png

7、前向肯定与否定预匹配

比如搜索后面必须紧跟hello这个单词的数字:[0-9]+(?=hello),匹配结果如下图:

a3646561ff23fc6e60dad986afef5fea.png

比如搜索后面一定不能紧跟hello这个单词的数字:[0-9]+(?!hello),匹配结果如下图:

3ff36909f69ea45ce0e5b39338e1d1ac.png

8、后向肯定与否定预匹配

比如搜索前面必须是数字的英文单词:(?<=[0-9]+)[a-zA-Z]+,匹配结果如下图:

6cdc63dbc0308acab607a55a0fa1161e.png

比如搜索前面一定不是数字的英文单词:(?

b6786704f5b0b965a3101f0b14bc4284.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值