正则表达式测试
写一个正则表达式,粘贴一段文字,即可随输入看到每个匹配、每个分组和替换后的结果。
已封存在本设备上
在浏览器中运行,不上传任何内容。
已封存
速查表
选择一个符号即可插入到表达式中。
- 一个数字 0–9
- 一个字母、数字或下划线
- 一个空格、制表符或换行符
- 除换行符外的任意字符
- 列出的字符之一
- 除列出字符外的任意字符
- 文本(或行)的开头
- 文本(或行)的结尾
- 单词边界
- 前一项出现零次或多次
- 前一项出现一次或多次
- 前一项可有可无
- 前一项出现 2 到 4 次
- 一个捕获组
- 一个命名捕获组
- 左边或右边任一
- 后面紧跟…,但不包含在匹配中
- 字面意义的点(用 \ 转义任何特殊字符)
文本中的匹配
表达式运行超过一秒,已被停止。带嵌套重复的表达式(如 (a+)+)在某些文本上耗时可能呈指数级增长。请尝试让重复部分更具体。
匹配
- 匹配数
- 0
- 分组数
- 0
匹配结果及其分组会列在这里。
替换
用 $1、$2… 表示编号分组,$<name> 表示命名分组,$& 表示整个匹配。
使用方法
-
编写表达式
输入表达式并选择修饰符。如果记不清语法,可以用速查表插入常用符号。
-
粘贴文本
匹配内容会随输入高亮显示,每个匹配都会列出其位置和捕获组。
-
试试替换
输入替换内容(可使用 $1 或 $<name>),预览查找替换的结果,然后复制。
常见问题
这里用的是哪种正则语法?
JavaScript 的语法,与你的浏览器运行时完全一致,包括命名分组、后行断言和 \p{L} 这样的 Unicode 属性转义。大部分语法与 Python、PHP 和 Java 通用,但有些功能不同。
我的文本会被发送出去吗?
不会。表达式在你的浏览器中、在单独的后台线程里运行。你的表达式和文本始终不会离开你的设备。
为什么我的表达式被停止了?
有些表达式(通常是重复中嵌套重复)在失败之前可能会尝试数十亿种组合,这称为灾难性回溯。测试工具会停止任何运行超过一秒的匹配,确保页面不会卡死。
g 修饰符有什么作用?
不加 g 时,只查找和替换第一个匹配。加上 g 后,文本中的每个匹配都会被查找和替换。
怎样按字面匹配点、括号或问号?
在它前面加一个反斜杠:\. 匹配点,\( 匹配括号,\? 匹配问号。在方括号内,大多数字符本来就是字面意义。