EasyDebug.NET

正则表达式速查表

字符类、量词、锚点、分组与高阶语法速查,标注引擎差异

共 57 条

.
任意字符字符类

匹配除换行符外的任意单个字符

\d
数字字符类

匹配一个数字,等价于 [0-9]

\D
非数字字符类

匹配一个非数字字符,等价于 [^0-9]

\w
单词字符字符类

匹配字母、数字或下划线,等价于 [A-Za-z0-9_]

\W
非单词字符字符类

匹配非字母、数字、下划线的字符

\s
空白字符字符类

匹配空格、制表符、换行符等空白字符

\S
非空白字符字符类

匹配一个非空白字符

[abc]
字符集合字符类

匹配方括号中列出的任意一个字符

[^abc]
否定字符集字符类

匹配未在方括号中列出的任意字符

[a-z]
字符范围字符类

匹配指定范围内的任意字符,如 [a-z] 匹配小写字母

[\u4e00-\u9fa5]
汉字范围字符类

匹配一个中文汉字(CJK 统一表意文字基本区)

*
0 次或多次量词

前面的元素重复 0 次或多次,等价于 {0,}

+
1 次或多次量词

前面的元素重复 1 次或多次,等价于 {1,}

?
0 次或 1 次量词

前面的元素出现 0 次或 1 次(可选),等价于 {0,1}

{n}
精确 n 次量词

前面的元素恰好重复 n 次,如 \d{4} 匹配 4 位数字

{n,}
至少 n 次量词

前面的元素至少重复 n 次

{n,m}
n 到 m 次量词

前面的元素重复 n 到 m 次(含边界)

*? +? ??
懒惰匹配量词

量词后加 ? 表示懒惰(非贪婪)匹配,尽可能少地匹配

^
行首锚点锚点

匹配字符串开头;多行模式(m)下匹配每行开头

$
行尾锚点锚点

匹配字符串结尾;多行模式(m)下匹配每行结尾

\b
单词边界锚点

匹配单词与边界之间的位置,不消耗字符

\B
非单词边界锚点

匹配非单词边界的位置

(...)
捕获分组分组与引用

将括号内内容作为一个整体,并捕获匹配结果供引用

(?:...)
非捕获分组分组与引用

仅分组不捕获,不占用分组编号

(?<name>...)
命名分组分组与引用

为捕获分组命名,可通过名字引用匹配结果

\1
反向引用分组与引用

引用第 1 个捕获分组匹配到的内容,如 (ab)\1 匹配 abab

a|b
或运算分组与引用

匹配符号左侧或右侧的任意一个分支

(?=...)
正向先行断言环视断言

匹配位置后面紧跟指定内容才成功,不消耗字符

(?!...)
负向先行断言环视断言

匹配位置后面不紧跟指定内容才成功

(?<=...)
正向后行断言环视断言

匹配位置前面是指定内容才成功,不消耗字符

(?<!...)
负向后行断言环视断言

匹配位置前面不是指定内容才成功

g
全局标志标志

匹配全部结果而非第一个

i
忽略大小写标志

匹配时忽略字母大小写

m
多行模式标志

使 ^ 和 $ 匹配每一行的开头和结尾

s
单行模式标志

使 . 也能匹配换行符(dotAll)

u
Unicode 模式标志

启用 Unicode 码点匹配,正确处理 emoji 等宽字符

y
粘性匹配标志

从 lastIndex 位置开始匹配(sticky)

\.
转义点号转义

匹配字面量点号本身,而非任意字符

\n \t \r
控制字符转义

分别匹配换行符、制表符、回车符

\u{1F600}
Unicode 转义转义

按码点匹配 Unicode 字符,需配合 u 标志,如匹配 emoji

*+ ++ ?+
占有量词量词

量词后加 + 表示占有匹配,匹配后不回退;PCRE、Python 3.11+、Java 支持,JavaScript 不支持

(?>...)
原子组分组与引用

组内匹配后不再回退,可用于避免灾难性回溯;PCRE、Java、.NET 支持,JavaScript 不支持

(?(1)yes|no)
条件表达式分组与引用

第 1 个分组匹配成功则用 yes 分支,否则用 no 分支;PCRE、Python、.NET 支持,JavaScript 不支持

[[:alpha:]]
POSIX 字符类字符类

POSIX 命名字符类,如 alpha、digit、alnum、space;PCRE 与 POSIX 支持,JavaScript 不支持

\k<name>
命名反向引用分组与引用

引用命名分组 (?<name>...) 匹配到的内容;JavaScript、PCRE、.NET 支持,Python 写作 (?P=name)

\A
字符串绝对开头锚点

匹配整个字符串的开头,不受多行模式影响;JavaScript 不支持,可用 ^ 替代

\Z
字符串结尾(允许末尾换行)锚点

匹配字符串结尾,并允许末尾有一个换行符;JavaScript 不支持

\z
字符串绝对结尾锚点

匹配字符串的绝对末尾,不允许多余换行;JavaScript 不支持

^[1-9]\d*$
正整数常用示例

匹配非零开头的正整数

^1[3-9]\d{9}$
手机号(中国大陆)常用示例

匹配 1 开头第二位 3-9 的 11 位手机号

^[\w.-]+@[\w-]+(\.[\w-]+)+$
邮箱常用示例

匹配常见格式的电子邮箱地址

^https?://[^\s]+$
URL常用示例

匹配 http 或 https 开头的 URL

^(\d{1,3}\.){3}\d{1,3}$
IPv4 地址常用示例

匹配点分十进制 IPv4 地址(未校验 0-255 范围)

^\d{4}-\d{2}-\d{2}$
日期常用示例

匹配 YYYY-MM-DD 格式日期

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
强密码常用示例

至少 8 位且同时包含字母和数字

<[^>]+>
HTML 标签常用示例

匹配成对的尖括号 HTML 标签

[\u4e00-\u9fa5]+
提取汉字常用示例

从文本中提取连续的中文汉字

这个工具不好用,或者遇到 bug?

去反馈
站长的博客
提个建议