1、正则字符

1、元字符

常用元字符如下:

元字符说明
.匹配除换行符以外的 任意字符
\w匹配字母或者数字或者下划线或者汉字
\s匹配任意的空白符
\d匹配数字
\b

匹配单词的开始或结束,(列子可看下面这个博客)

 https://blog.csdn.net/lxy_hegh/article/details/110735152

^匹配字符串的开始
$匹配字符串的结束

1、匹配有abc开头的字符串:

1   \babc或者^abc

2. 匹配8位数字的QQ号码:

1   ^\d\d\d\d\d\d\d\d$

3. 匹配1开头11位数字的手机号码:

1   ^1\d\d\d\d\d\d\d\d\d\d$

2. 重复限定符

有了这些限定符之后,我们就可以对之前的正则表达式进行改造了,比如:

1. 匹配8位数字的QQ号码:

1   ^\d{8}$

2. 匹配1开头11位数字的手机号码:

1   ^1\d{10}$

3. 匹配银行卡号是14~18位的数字:

1   ^\d{14,18}$

4. 符匹配以a开头的,0个或多个b结尾的字串

1   ^ab*$

3、分组

普通捕获组

如果没有显式为捕获组命名,即没有使用命名捕获组,那么需要按数字顺序来访问所有捕获组。在只有普通捕获组的情况下,捕获组的编号是按照“(”出现的顺序,从左到右,从1开始进行编号的 。

命名捕获组

命名捕获组通过显式命名[在括号内最前面加上【?<名字>】,可以通过组名方便的访问到指定的组,而不需要去一个个的数编号,同时避免了在正则表达式扩展过程中,捕获组的增加或减少对引用结果导致的不可控。

不过容易忽略的是,命名捕获组也参与了编号的,在只有命名捕获组的情况下,捕获组的编号也是按照“(”出现的顺序,从左到右,从1开始进行编号的 。

普通捕获组与命名捕获组混合编号规则

混合方式的捕获组编号,首先按照普通捕获组中“(”出现的先后顺序,从左到右,从1开始进行编号,当普通捕获组编号完成后,再按命名捕获组中“(”出现的先后顺序,从左到右,接着普通捕获组的编号值继续进行编号。

也就是先忽略命名捕获组,对普通捕获组进行编号,当普通捕获组完成编号后,再对命名捕获组进行编号。

4. 转义

我们看到正则表达式用小括号来做分组,那么问题来了:

如果要匹配的字符串中本身就包含小括号,那是不是冲突?应该怎么办?

针对这种情况,正则提供了转义的方式,也就是要把这些元字符、限定符或者关键字转义成普通的字符,做法很简答,就是在要转义的字符前面加个斜杠,也就是\即可。
如:要匹配以(ab)开头:

  ^(\(ab\))*

比如匹配email中的.就需要\.进行转义,因为不转义的话.会被认为是表示匹配除换行符以外的 任意字符

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

5. 条件或

假如让我们匹配一个联通的号码,联通有130/131/132/155/156/185/186/145/176等号段,比如130xxxxxxxx这样的数字

正则用符号 | 来表示或,也叫做分支条件,当满足正则里的分支条件的任何一种条件时,都会当成是匹配成功。

那么我们就可以用或条件来处理这个问题

1   ^(130|131|132|155|156|185|186|145|176)\d{8}$

6. 区间

正则提供一个元字符中括号 [] 来表示区间条件。

  1. 限定0到9 可以写成[0-9]
  2. 限定A-Z 写成[A-Z]
  3. 限定某些数字 [165]

那上面的正则我们还改成这样:

1   ^((13[0-2])|(15[56])|(18[5-6])|145|176)\d{8}$

本文参考

https://www.zhihu.com/question/48219401/answer/742444326

https://blog.csdn.net/lxcnn/article/details/4146148

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值