字符

含义

举例

.

匹配任意一个字符

abc. -> abcd或abc6…

[]

匹配[]中的任意一个字符

[abc]d -> ad、bc、cd

-

在[]内表示字符范围

[0-9a-fA-F]-> 一位16进制数

^

位于[]内的开头,匹配除括号以外的任意一个字符

[^xy]->匹配除x y外的任意一个字符

  • \w 匹配任何字母``数字``下划线字符
  • \d 匹配任何十进制数字
  • \s 匹配任意空格字符

符号

替换正则

匹配

\d

[0-9]

数字字符

\D

[^0-9]

非数字组合

\w

[a-zA-Z0-9_]

数字字母下划线

\W

[^\w]

非数字字母下划线

\s

[\r\t\n\f]

表格,换行等空白区域

\S

[^\s]

非空白区域

特殊符号

字符

含义

举例

\

转义字符,普通字符转义为特殊字符,特殊字转义为普通字符

普通字符<写成<表示开头位置

()

将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符

([0-9]{1,3}.){3}[0-9]{1,3} -> 匹配正则表达式

`

`

连接两个子表达式,表达或的关系

|

从多个模式中选择其一,类似于逻辑或

cpp|java|python

数量限定符

  • *将匹配其左边的正则表达式出现零次多次的情况。
  • +将匹配其左边的正则表达式出现一次多次的情况。
  • 将匹配其左边的正则表达式出现零次一次的情况。
  • {M}将匹配其左边的正则表达式出现M次的情况。
  • {M,N}将匹配其左边的正则表达式出现M到N次的情况。
  • {M,}将匹配其左边的正则表达式出现M次更多次的情况。

位置限定符

字符

含义

举例

^

匹配行首的位置

^Content -> 匹配位于一行开头的Content

$

匹配行末的位置

;$ -> 匹配位于一行结束的; ^$ -> 匹配空行

<

匹配单词开头的位置

<th -> 匹配 th…

>

匹配单词结尾的位置

p> -> 匹配 …p

\b

匹配单词开头或结尾的位置

\bat -> 匹配at…或…at

\B

匹配非单词开头或结尾的位置

\Bat -> 匹配…at…

  • ^或\A接字符串,表示以该字符串开始(区别:^匹配一行的开始,\A匹配输入的开始)
  • $或\Z接字符串,表示以该字符串结尾(同上)
  • \b接字符串,表示以该字符串开始(区别于^和\A:匹配一个单词起始部分,不管该单词前面是否有任何字符。通俗来说:^匹配字符串的开始\b匹配单词的开始
  • \B接字符串,表示以该字符串为子串但不是边界

贪婪模式与非贪婪模式

  1. 贪婪模式:正则表达式匹配时,会尽量多的匹配符合条件的内容
  2. 非贪婪模式:正则表达式匹配时,会尽量少的匹配符合条件的内容,也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g,开启下一组匹配)

常用

符号

描述

表达式例子

校验内容

例子结果

.

匹配一个字符且仅限一个字符

a.c

abc

共 1 个匹配项

\d

匹配任意个数字

\d

123464

共 6 个匹配项

\w

匹配一个字母、数字或下划线,w的意思是word(不能匹配#、空格等字符)

\w

gddgfdh

共 7 个匹配项

\s

可以匹配一个空格字符,空格字符不但包括空格,还包括tab字符

a\sc

a c

共 1 个匹配项

\D

匹配一个非数字

00\D

007

没有匹配结果

\W

匹配\w不能匹配的字符

\S

匹配\s不能匹配的字符

*

匹配任意个字符,包括0个字符

A\d*

A380

共 1 个匹配项

+

匹配至少一个字符

A\d+

A380

共 1 个匹配项

?

匹配0个或一个字符

A\d?

A

共 1 个匹配项

{n}

精确匹配n个字符

A\d{3}

A380

{n,m}

精确匹配n~m个字符

A\d{3,5}

A38000

共 1 个匹配项

^

表示开头

^A\d{3}

A3800000000

共 1 个匹配项

$

表示结尾

^A\d{3}$

A3800000000

没有匹配结果

[…]

匹配指定的范围 1-9:[1-9] a-f:[a-f] A-F:[A-F] 排除法:即不包含指定范围的字符用^表示 [^1-9]{3}

[123456789]\d{6,7}

1234567

共 1 个匹配项


或规则匹配 可以提取公共部分后采用括号包裹的方式匹配

(java | php | go)

java、learn php

AB丨CD

(…)

分组匹配 例:区号-电话号匹配规则^(+\d{2})-(\d{11})$,括号分组

^(+\d{2})-(\d{11})$

+86-18000000000

共 1 个匹配项