正则表达式总结

1.正则表达式简介:

正则表达式是一些具有特殊含义的字符组成的字符串,多用于查找替换符合规则的字符串。

2.元字符:

元字符:有特殊含义的字符

常见的元字符如下:

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思
$匹配字符串的结束

示例:

(1)\d\w\s 匹配第一个字符为数字,第二个字符为字母或数字、或下划线或汉字,第三字符为空格的字符串 例如:22  ,2a , 1_

(2)^\d{18}&匹配18位均为数字的身份证号

(3)1^\d{10}&匹配以1开头的11位手机号

3.反义字符

反义字符:用于查找除某个字符以外其他任意字符均可以的情况

常用的反义字符:

代码/语法说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

详解和示例:

(1)\W    匹配除字母、数字、下划线、汉字以为的字符形如  +,-,*

(2)\S     匹配除空格以外的任意字符形如:1,* ,)

(3)[^abcde]匹配除abcde以为的其他字符 如  e,f,g,h

 4.限定字符

限定字符:多用于重复匹配次数

常用的限定字符

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

详解和示例:

(1)\d*   匹配重复0次或多次数字   例如:可能为空 或 任意数字 (2,3。。。。)

(2)\d+ 匹配重复1次或多次数字    例如:可能为1个或多个数字 1,23,234,2345,........

(3)\d? 匹配重复0个或者一次数字  例如:可能为空或者任意的一个数字(1,2,。。。)

(4)\d{8}匹配重复8次数字     例如:123456768

(5)\d{4,}匹配重复至少4次数字 例如:1234,12345,124244,。。。。。

(6)^\d{8,11}$ 匹配重复8-11次数字 例如:12345678,123456789,1234567890,12345678901

 5.转义字符

转义字符:实际的开发中,可能会遇到要匹配元字符的情况,这个时候就需要进行字符转义

转义前转义后
.\.
*\*
\\\

例如:需要匹配qq邮箱:xxxxxxxxxx@qq.com

代码段:\d{8,}@qq\.com

6.字符分枝

字符分枝:多用于满足不同情况的选择,用“|”将不同的条件分割开来

比如有些固定电话区号有三位,有些有四位,这个时候可以采用字符分枝

代码:\d{3}-\d{8}|\d{4}-\d{8}  匹配两种不同长度区号的固定电话

7.字符分组

字符分组:用于将多个字符重复,主要通过使用小括号()来进行分组

例如:(\d\w){3} 重复匹配3次(\d\w)

常用于表示IP地址   形如: ((25[0-5]|2[0-4][0-9]|[0-1]\d\d)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]\d\d)

255.255.255.255

常用分组语法:

 8.懒惰匹配和贪婪匹配

贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。

懒惰匹配,有时候需要匹配尽可能少的字符。

例如: a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。但是我们此时可能需要匹配的是ab这样的话,就需要用到懒惰匹配了,懒惰匹配会匹配尽可能少的字符。

常用的懒惰匹配限定符如下:

 9.后向引用

后向引用:用于重复搜索前面某个分组匹配的文本。

例如:\b(\w+)\b\s+\1\b 用来匹配重复的单词 如:go go, aa aa  

\b 匹配开始和匹配结束

\w+  一个或多个字母或下划线

\s+   一个或多个空格

\1   编号为1的分组,也就是(\w)

你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成'也行:(?'Word'\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的内容,你可以使用\k<Word>,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+\k<Word>\b

10.零宽断言

零宽断言:有时候需要查找某些匹配位置之前或之后的内容,这个位置应该满足一定的条件(即断言)

举例:比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。

11.常用的实用正则表达式整理

只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。

只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
验证身份证号(15位或18位数字):"^"d{15}|"d{18}$"。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值