正则表达式 测试器
在浏览器中即时测试和调试正则表达式。高亮匹配项、查看捕获组、使用替换模式——免费且私密。
在浏览器中即时测试和调试正则表达式。高亮匹配项、查看捕获组、使用替换模式——免费且私密。
正则表达式是一种用于匹配文本模式的特定于领域的语言。自 1968 年以来,它们一直是计算的一部分,现在已内置到每种现代编程语言、文本编辑器和命令行搜索工具中。语法简洁但容易出错:微小的变化会产生细微不同的匹配行为,复杂的表达式很快就会变得不可读。在您编辑模式时实时显示匹配的测试程序是开发和验证正则表达式的最有效方法。
该测试器使用 JavaScript 正则表达式引擎在您的浏览器中运行(如果应用程序在浏览器中运行,则与您的应用程序使用的引擎相同)。模式和测试文本反应式更新:每次更改都会重新运行匹配。突出显示匹配组,列出捕获的组,并公开标志(不区分大小写、多行、全局)以进行测试。
正则表达式语法在引擎之间略有不同。 JavaScript 遵循 ECMAScript 规范; Python、PCRE(PHP 和许多其他语言使用)、Java 和 Go 都有自己的方言,这些方言具有重叠但不完全相同的功能。这里开发的模式使用 ECMAScript 语法;跨引擎可移植性需要检查每个目标的文档。
众所周知,正则表达式错误在部署后很难调试。看起来合理的模式可能比预期匹配更多或更少,在边缘情况下失败,或者在某些输入上出现灾难性的回溯。针对代表性输入以交互方式测试模式可以在代码审查和生产之前捕获问题。
模式也受益于文档。在应该匹配的输入和不应该匹配的输入旁边显示正则表达式可以使意图明确。未来的维护者(包括六个月后的你自己)更欣赏记录下来的测试用例,而不是聪明的俏皮话。
输入模式,输入测试输入,查看实时突出显示的匹配项。
JavaScript 正则表达式遵循 ECMAScript 规范。主要功能:字符类 ([abc]、[^abc])、量词 (*、+、?、{n,m})、交替 (|)、分组 ((...))、捕获和非捕获组、前向和后向(现代引擎)、反向引用、命名组、Unicode 属性转义(带有 u 标志)和标准转义序列集。
与 PCRE 和 Python 的重要区别:JavaScript 中最近才支持lookbehind(2018+);命名组使用 (?<name>...) 语法;一些 Unicode 转义需要 u 标志才能正常工作。应根据每个目标的文档检查用于跨语言使用的模式。
性能:基于回溯的正则表达式引擎(大多数包括 JavaScript)可能会对某些病态模式产生灾难性的回溯。使测试人员挂起的测试表明该模式需要简化 - 通常通过避免嵌套量词和不明确的交替来简化。