正则表达式测试

写一个模式,粘贴一段文本,输入时即可看到所有高亮的匹配和分组。

标志

匹配结果

#匹配位置分组

速查表

语法含义
.除换行外的任意字符
\d \w \s数字、单词字符、空白
\D \W \S上述以外的任意字符
[abc] [^abc]a、b、c 中的一个;除它们以外的任意字符
[a-z]范围内的一个字符
^ $输入的开头和结尾(加 m 时为行首行尾)
\b单词边界
* + ?零个或多个、一个或多个、零个或一个
{3} {2,5}恰好 3 个;2 到 5 个
*? +?尽可能少(惰性)
(abc)捕获分组
(?<name>abc)命名捕获分组
(?:abc)非捕获分组
a|ba 或 b
(?=abc) (?!abc)后面紧跟;后面不跟
(?<=abc) (?<!abc)前面是;前面不是
\1 \k<name>重复分组已匹配的内容

常见问题

这里用的是哪种正则?

JavaScript(ECMAScript)正则,与你的浏览器完全一致。大部分语法与 Python、Java、PCRE 相同,但后行断言和命名分组等细节可能不同。

为什么我的模式超时了?

像 (a+)+$ 这样的模式在几乎匹配的输入上可能耗费指数级时间。本工具在后台线程中运行模式,1 秒后自动停止。

替换时怎样引用分组?

编号分组用 $1、$2,命名分组用 $<name>,整个匹配用 $&。