正则表达式

元字符

.​:匹配任意字符(除\n)
\w​:匹配字母,数字,下划线
\W​:匹配非字母,数字,下划线
\s​:匹配任意空白字符
\S​:匹配任意非空白字符
\d​:匹配任意十进制数

限定符

?​ 前面的字符可以出现 0 次或 1 次(可有可无)
*​ 前面的字符可以出现 0 次或者是多次
+​ 前面的字符出现一次以上
{}​ 可以限定出现的次数

例如
{n}前面出现 n 次
{n,}最少出现 n 次
{n,m}最少出现 n 次,最多 m 次

边界符

\b​ 单词边界符

\B​ 非该单词边界

/g​ 全局标记找到所有匹配子串

匹配模式

/m​ 多行匹配

^​ 开头

$​ 结尾

.*​:贪婪验证

.*?​:惰性验证

其他字符

[]​ 区间字符:匹配[]所指定的字符

[.?!]匹配句号,问号,感叹号
[0-5]匹配 0,1,2,3,4,5

^​ 排除字符:匹配不在[]中指定的字符

[^0-5]匹配除了 0,1,2,3,4,5 之外的字符

|​ 选择字符:用于匹配|作用的任意字符

\d{18}|\d{15}匹配 18 位或 15 位身份证

\​ 转义字符:将特殊字符转为普通字符使用

[\u4e00-\u9fa5]​:匹配任意一个汉字

()​ 分组:改变限定字符的作用

分组

  • 普通分组

    ()

  • 非捕获分组

    (?:<表达式>)

  • 回溯分组

    \<number>

    数字代表了第几个分组

(ab)+ ab 出现一次以上

断言

先行断言

  • 正向

    (?=<表达式>)

    右边必须出现某个字符

  • 反向

    (?!<表达式>)

    右边不能出现某个字符

后行断言

  • 正向

    (?<=<表达式>)

    左边必须出现某个字符

  • 反向

    (?<!<表达式>)

    左边不能出现某个字符