正则表达式测试器
新测试正则表达式,实时高亮匹配结果,支持捕获组和替换预览。
Match highlight
Matches & groups
Replace
Regex cheatsheetquick reference
- \d \D
- digit / non-digit
- \w \W
- word char / non-word char
- \s \S
- whitespace / non-whitespace
- .
- any char (except newline without s flag)
- ^ $
- start / end of string (line with m flag)
- \b \B
- word boundary / non-boundary
- [abc] [^abc]
- char set / negated set
- [a-z0-9]
- char range
- a* a+ a?
- 0+ / 1+ / 0 or 1
- a{3} a{2,5} a{2,}
- exactly 3 / 2–5 / 2 or more
- a*? a+?
- lazy (non-greedy) quantifiers
- (abc)
- capture group → $1
- (?<name>abc)
- named group → $<name>
- (?:abc)
- non-capturing group
- a|b
- alternation (a or b)
- \1 \k<name>
- backreference
- (?=abc) (?!abc)
- lookahead / negative lookahead
- (?<=abc) (?<!abc)
- lookbehind / negative lookbehind
- \n \t \r
- newline / tab / carriage return
- \. \* \\
- escaped literal . * \
Runs entirely in your browser. Nothing is uploaded.
实时测试正则表达式,使用真实的JavaScript引擎
这款免费的正则表达式测试工具在您输入时即时高亮所有匹配项,使用的是浏览器原生JavaScript正则引擎——因此在这里匹配的内容与您的前端代码或Node.js中的结果完全一致。随时切换六个标志(g、i、m、s、u、y),无效的正则表达式会直接显示引擎返回的错误信息,而非静默失败。
实时高亮下方还提供完整的匹配列表——每个匹配项的位置及所有捕获组(编号组和命名组均支持),以及替换面板,可在输入时实时预览使用$1、$<name>和$&反向引用的替换结果。模式调试完成后,点击复制为JavaScript代码即可获取可直接粘贴使用的代码。
专注于JavaScript的regex101.com和regexr.com替代工具
像regex101.com这样的重量级测试工具支持PCRE、Python、Golang和.NET等多种正则引擎——在需要比较不同引擎时很有用,但当您只需调试一个JS正则时往往显得过于复杂。regexr.com提供社区正则模式和参考指南。两者都需要在多个标签页之间切换才能从匹配结果跳转到替换预览。
这款在线正则测试工具在一个简洁的界面上回答日常最重要的三个问题:是否匹配、捕获了什么内容、替换后的结果是什么?无需选择引擎,无需注册,无需上传文件。与只显示高亮的regexpal.com或侧重可视化铁路图的debuggex.com不同,本工具额外提供逐匹配的捕获组提取和支持反向引用的实时替换预览。
常用正则模式,一键即用
内置模式库提供经过实战检验的正则模式及真实示例文本:邮箱地址、网址、IPv4地址、ISO日期、24小时制时间、十六进制颜色、URL别名、国际手机号码、数字(整数/小数)和HTML标签。每个模式都附带有效和无效的示例,帮助您精确了解模式的边界。
这些模式是出发点,而非最终答案——直接在页面上修改并观察高亮的变化。示例文本特意包含边界情况(如IPv4的999.999.1.1),让您学会每种模式会拒绝什么,而不仅仅是接受什么。这比从技术论坛复制正则再猜测它能否处理您的边界情况要快得多。
捕获组、零宽断言与全部六个标志——完整支持
现代JavaScript正则表达式拥有强大功能:命名分组 (?<year>\d{4})、前瞻断言 (?=…) 和后瞻断言 (?<=…)、配合u标志使用的Unicode属性转义,以及y标志的粘性匹配。本工具完整支持上述所有功能,因为它本身就是JavaScript引擎。匹配面板会逐项列出每个匹配中各分组的值,让提取逻辑一目了然、随时验证。
m标志的演示最受欢迎:启用后,^ 和 $ 会锚定到测试文本每一行的起止位置——粘贴一份日志文件,^ERROR模式会立即高亮每一行错误日志。开启s标志后,. 可以匹配多行字符串中的换行符,无需额外处理。您在这里看到的所有结果与您代码的实际输出完全一致。
利用内置速查表更快掌握正则表达式
可折叠的正则速查表涵盖日常使用频率最高的语法——字符类(\d \w \s)、锚点(^ $ \b)、量词(* + ? {n,m} 及其懒惰形式)、分组、分支、反向引用和全部四种零宽断言。在实验时保持速查表展开;看到某个语法的实时高亮效果,是最快的记忆方式。
从简单开始:匹配一个字面词语,添加字符类,再加量词,再加分组。在正则练习场中五分钟的实时反馈,胜过一小时的语法表格阅读。移动端同样适用——布局自适应小屏幕,无需安装任何应用,即可在手机上调试正则表达式。
Frequently asked questions
正则表达式测试工具是什么?
正则表达式测试工具是一个交互式工具,您输入一个正则表达式和示例文本,它会立即高亮显示所有匹配项。本工具显示捕获组的值——包括编号组和命名组——支持全部六个JavaScript标志(g、i、m、s、u、y),提供带反向引用的实时替换预览、常用模式库以及完整速查表。您可以在将正则表达式用于代码之前进行调试和验证,无需安装任何软件,也无需创建账号。
这个正则测试工具和regex101.com、regexr.com相比有什么区别?
regex101.com和regexr.com都很出色,但界面有些复杂——多种引擎支持、完整调试器、测验题、社区模式。本工具专注于JavaScript引擎,只回答日常最重要的三个问题:是否匹配、捕获了什么、替换结果如何?它加载迅速,工作内容保存在本地,完全在浏览器中运行,并通过URL编码链接分享模式——两端均无需账号。不同于regex101支持PCRE、Python和Golang等引擎,本工具运行的是浏览器原生JavaScript引擎,结果精确无误。
这个工具和regexpal.com或debuggex.com有什么不同?
有所不同。Regexpal提供基本的高亮显示,但没有捕获组明细,也没有替换预览。Debuggex添加了可视化铁路图,但缺少常用模式库。本工具额外提供逐匹配的捕获组提取、支持$1/$<name>/$&反向引用的实时替换面板,以及附带真实示例文本的内置模式库——同时运行真正的JavaScript引擎,结果与代码实际输出完全一致。所有功能均可离线使用,无需上传任何内容。
正则表达式是什么意思?
正则表达式(regex)是一组定义搜索模式的字符串。正则表达式用于在几乎所有编程语言和文本编辑器中进行文本的匹配、提取、验证和查找替换操作。这个术语可以追溯到20世纪50年代和数学家斯蒂芬·科尔·克莱尼,但正则表达式的广泛应用是在20世纪80年代随Perl语言兴起而爆发的。
如何在JavaScript中测试正则表达式?
在JavaScript中有几种方式:使用regex.test(str)进行布尔值判断,用str.match(regex)获取匹配文本,用str.matchAll(regex)获取所有匹配项及分组详情,或用regex.exec(str)逐个迭代匹配结果。本工具在您输入时实时执行上述所有操作——"复制为JavaScript代码"按钮会为您的模式生成可直接粘贴到项目中的完整代码。
正则表达式中的捕获组是什么?
括号()创建一个捕获组,存储括号内匹配的内容,可通过$1、$2等引用。命名组写作(?<name>...),让您可以用名称而非编号引用捕获内容。捕获组让您能够提取匹配的部分内容——例如从邮箱地址中提取用户名和域名——或在替换中复用它们。本工具的匹配面板列出每个匹配中所有分组的值,让您在将提取逻辑用于生产代码前轻松验证。
正则表达式标志g、i、m、s、u和y分别是什么意思?
g(全局)查找所有匹配项而非在第一个匹配后停止;i(忽略大小写)使匹配不区分大小写;m(多行)使^和$匹配每一行的起止位置而非整个字符串的首尾;s(点号全匹配)使点号也能匹配换行符;u(Unicode)启用完整Unicode支持和\p{Letter}等属性转义;y(粘性)将匹配锚定到lastIndex位置。本工具中,所有六个标志均可单击切换。
正则表达式默认区分大小写吗?
是的——/hello/匹配"hello"但不匹配"Hello"。开启i(忽略大小写)标志可使模式不区分大小写。这是验证逻辑中常见的错误来源——例如,一个邮箱正则因忘记添加i标志而无法匹配"User@Example.COM"。
JavaScript中match、test和exec有什么区别?
test()返回布尔值——当您只需判断是否匹配时使用。match()在字符串上调用,返回匹配数组或null。exec()在正则上调用,每次返回一个详细匹配结果,设置g标志后可逐步遍历字符串。matchAll()一次性返回所有匹配项及完整分组详情——通常是提取操作的最佳选择。本工具在底层运行matchAll,并在匹配面板中展示所有结果。
正则表达式中的前瞻断言和后瞻断言是什么?
前瞻断言(?=...)检查当前位置之后是否紧跟某个模式,而不消耗字符;负前瞻(?!...)检查相反的条件。后瞻断言(?<=...)和(?<!...)对当前位置之前的内容执行同样的检查。它们适用于"匹配后面不跟百分号的数字"或"匹配前面有人民币符号的词语"等条件。所有四种零宽断言在本工具中均可使用,因为现代JavaScript(V8引擎)完整支持它们。
所有编程语言的正则表达式都一样吗?
不——各种正则引擎差异显著。JavaScript、PCRE(PHP和Perl使用)、Python的re模块、.NET、Java和Ruby各自支持不同的语法和功能。PCRE支持JavaScript所没有的占有量词和原子组;Python使用(?P<name>...)表示命名组而非(?<name>...);.NET还增加了平衡分组。本工具运行真正的JavaScript/V8引擎,结果与您的前端代码或Node.js完全一致。
如何用正则表达式进行查找替换?
在JavaScript中,str.replace(/pattern/g, '替换内容')替换所有匹配项。在替换字符串中使用$1或$<name>插入捕获组的内容,$&代表整个匹配项。本工具的替换面板会在您输入时实时预览结果,让您在将其写入代码之前确认替换效果。您也可以使用函数作为替换参数来实现更复杂的转换——例如将每个匹配项首字母大写。
正则表达式中的\d、\w和\s分别是什么意思?
\d匹配任意数字(0–9),\w匹配单词字符(字母、数字或下划线),\s匹配空白字符(空格、制表符、换行符)。它们的大写形式\D、\W和\S匹配相反的内容——即\d、\w和\s不匹配的所有内容。内置速查表列出了这些及所有其他常用语法符号及示例。字符类是绝大多数实际正则表达式的基本构建块。
为什么我的正则表达式匹配了太多内容(贪婪匹配)?
默认情况下,*和+等量词是贪婪的——它们会尽可能多地匹配文本。添加?使其变为懒惰模式(.*?),让量词尽可能少地匹配。另一种方法是使用否定字符类如[^"]*,在特定分隔符处停止。将文本粘贴到本工具中,您会看到贪婪与懒惰模式的高亮对比——这是理解匹配行为最快的方式。
这个正则测试工具免费吗?可以分享模式吗?
完全免费,无广告,无需注册。"复制分享链接"将您的正则模式、标志和测试文本编码到URL中,同事打开后看到的内容与您看到的完全一致——两端均无需账号。您的工作也会自动保存在浏览器本地,下次返回时仍在。与regex101需要登录才能永久保存和分享模式不同,本工具可立即生成可分享的链接。