首页 / 开发者工具 / 正则表达式测试器

正则表达式测试器

免费的在线正则表达式测试器,支持实时匹配高亮、常用模板库、语法速查、标志位切换、分组替换功能。支持邮箱、手机号、URL等20+常用正则。

相关工具

  • JSON 校验器
  • XML 校验器
  • HTML 校验器
  • CSS 校验器
  • 信用卡号验证器
  • 邮箱格式验证

常见问题

Q:贪婪匹配和非贪婪匹配有什么区别?
A>贪婪匹配(*、+、?、{n,m})会尽可能多地匹配字符;非贪婪匹配(*?、+?、??、{n,m}?)会尽可能少地匹配。例如对 "a]b]c" 用 a.+] 匹配得到 "a]b]"(贪婪到最后一个 ]),用 a.+?] 匹配得到 "a]b"(只到第一个 ])。
Q:什么是"灾难性回溯"?如何避免?
A>当正则中存在嵌套量词或交替组合时,引擎可能对某些输入产生指数级的回溯尝试,导致 CPU 卡死。例如 (a+)+b 匹配 "aaaaaaaaac"。避免方法:消除嵌套量词、使用原子组 (?>...) (JS 尚不支持)、或重构正则为确定形式。
Q:JavaScript 正则和其他语言有什么区别?
A>JavaScript 使用 NFA 引擎,支持回溯。ES2018 新增了命名捕获组、后行断言。但 JS 不支持原子组、占有量词、递归匹配等高级特性。如果需要更强大的正则,可使用 XRegExp 库。正则语法在 Perl、Python、Java 等语言间也有细微差异。
Q:如何匹配中文字符?
A>使用 Unicode 范围 [一-鿿] 匹配基本汉字。如需包含扩展区,范围更广。ES2018 的 Unicode 属性转义 \p{Script=Han} 配合 u 标志可以更精确地匹配中文字符。
Q:如何测试正则表达式的性能?
A>使用本工具的匹配详情面板查看回溯次数。也可以使用 console.time() 测量执行时间。更专业的工具如 regex101.com 会显示每一步的回溯过程。对于生产环境的正则,建议用 benchmark.js 进行压力测试。