Regex 测试器
对任意字符串测试 JavaScript 正则表达式,实时高亮显示匹配。捕获组、标志和位置在下方列出。
使用浏览器原生 RegExp,这里测试的结果就是你的 JavaScript 代码会得到的结果。
高亮
Highlighted matches will appear here.
匹配
Match list with capture groups will appear here.
JavaScript 风格
本测试器使用浏览器内置的 RegExp。它支持 ECMAScript 的正则语法,与 PCRE (PHP、Perl) 或 Python re 并不相同。你在其他引擎熟悉的部分构造在这里不可用或行为有别:
- No possessive quantifiers (
a*+,a++). - No atomic groups
(?>...). - No conditional patterns
(?(1)yes|no). - Lookbehind
(?<=...)is supported in modern browsers but can fail in older engines. - Named groups use
(?<name>...)(not(?P<name>...)like Python).
标志参考
g— return all matches, not just the first.i— case-insensitive match.m—^and$match at line breaks, not only string edges.s— dot.also matches newlines.u— full Unicode mode;\p{...}property escapes enabled.y— sticky: match must start exactly atlastIndex.
示例
可以粘贴到上方输入框查看效果的几个示例:
\d{4}-\d{2}-\d{2} # ISO-like dates
[\w.+-]+@[\w-]+\.[\w.-]+ # rough email
^https?:\/\/\S+ # URL at line start (needs m flag)
(?<year>\d{4})-(?<mo>\d{2}) # named groups常见问题
为什么我在 PHP/Python 中能用的 pattern 在这里失败?
本测试器以浏览器原生的 RegExp 运行 pattern,属于 ECMAScript 风格。PCRE 专有特性 (占有量词、原子分组、条件模式) 不被支持。请将 pattern 改写为 ECMAScript 兼容形式。
我的 pattern 让页面短暂卡顿,为什么?
JavaScript 正则引擎是单线程的,遇到带 catastrophic backtracking 的 pattern (例如 (a+)+$ 这样的嵌套量词) 会变慢。工具会把匹配列表上限设为 1000 来减轻影响,但匹配本身仍在页面里运行。
如何跨多行匹配?
若要让 . 也匹配换行,使用 s 标志;若要让 ^/$ 锚定到每一行,使用 m 标志。
我的 pattern 和测试文本会被发到哪里吗?
不会。正则完全在浏览器中运行,什么都不会上传。