【问题标题】:Where can I find unit tests for regular expressions in multiple languages?我在哪里可以找到多种语言的正则表达式的单元测试?
【发布时间】:2026-02-04 18:50:02
【问题描述】:

我正在http://www.debuggex.com 构建一个正则表达式助手。我想展示的细节量需要我编写自己的解析器和匹配器。

为了确保我的解析器和匹配器正常工作,我为正则表达式的 Javascript 风格编写了自己的单元测试,但这些仅涵盖了我所知道的边缘情况。我想使用标准测试套件,最近有人指出http://hg.ecmascript.org/tests/test262/summary,我将使用它。

我的问题是,我在哪里可以找到其他正则表达式风格的测试套件?我想在未来支持其他口味。我无法通过谷歌搜索找到任何东西(“测试”会污染正则表达式测试器的结果)。我正在寻找语言 pythonphpperljavaruby 和 .net

【问题讨论】:

  • 酷项目!对于初学者,Python 有unit tests for its re module
  • debuggex 做得好!太棒了!
  • 这真的很酷,很棒。
  • regexbuddy 是个好工具!
  • 您是否可以分享您提到的为正则表达式的 JS 风格创建的单元测试?

标签: java php javascript .net regex


【解决方案1】:

其中大部分语言都是开源的。任何体面的项目都应该在上述 repo 中有他们的测试用例,否则我会非常担心。

  • Python 的正则表达式测试
  • PHP 的正则表达式测试
  • Perl 的正则表达式测试看起来非常广泛
  • Open JDK 的单元测试(Java 的一种开源风格)
  • Ruby 的正则表达式测试
  • Mono 的正则表达式测试(.NET 的开源版本)
  • .NET Core 的正则表达式测试
  • RE2 的测试(Google 开发的 C++ 正则表达式引擎)
  • C 测试套件(由 AT&T Research 开发)
  • PCRE regex 测试(Perl 兼容的正则表达式 C 库)
  • JavaScript 正则表达式测试(Ecma Technical Committee 39 兼容性套件)

我还在this page 上找到了一份详尽的图表,可能对您有所帮助。

【讨论】:

  • OpenJDK Java,并不是真正意义上的Java。 (官方JDK是基于OpenJDK开发的,加上了一些闭源代码,所以构建可能不是100%兼容,但是正则引擎应该是一样的。)
  • 不正确的是 .NET 是封闭源代码。来源可在referencesource.microsoft.com/netframework.aspx 获得。你必须从那里挖掘才能找到特定的部分。
【解决方案2】:

其他语言的其他正则表达式测试套件:

奖金

  • Regfuzz(使用随机生成的无效正则表达式测试正则表达式稳健性的 C 工具包)

【讨论】:

    【解决方案3】:

    为了在一页上有完整的列表,我发现了从接受的答案中省略的那些:

    • Mono's 正则表达式测试(它是 .net 的开源版本)
    • PHP's 正则表达式测试

    【讨论】:

    • Mono 是 .Net 的开源版本。它有 C# 和 F# 的编译器,而不是 VB.Net。就个人而言,VB.Net 令人憎恶。
    • 更新答案以反映您的评论。
    • @SergiuToarca 为什么不编辑接受的答案并将它们添加到那里,这样我们就可以在一个答案中获得完整的列表?
    • 因为 SO 的积分系统强烈激励我添加自己的答案:P 但是,我已经编辑了接受的答案。