是否可以基于正则表达式模式生成示例字符串?

在我的应用程序中,用户可以将自己的正则表达式模式输入到文本框中,这样他就可以强制为另一个用户/文本框输入特定的输入。 用户是否可以查看与他输入的正则表达式匹配的字符串示例? 例如,如果他要输入: ^[AZ]{2}$ ,它将生成一个类似“ XX ”的字符串,以向用户显示他只能输入两个大写字母。

如果没有简单的方法来实现这一点(我认为没有),那么构建有多难? 或者这样的事情已经存在?

看看Xeger 。 看起来它可以做你想要的。 它虽然在Java中。

以下是测试套件中的示例:

  @Test public void shouldGenerateTextCorrectly() { String regex = "[ab]{4,6}c"; Xeger generator = new Xeger(regex); for (int i = 0; i < 100; i++) { String text = generator.generate(); assertTrue(text.matches(regex)); } } 

更新 :感谢Nikos Baxevanis,dk.brics.automaton已经移植到C# , https://github.com/moodmosaic/Fare

对于C#,您可能还想查看项目费用 。 有关详细信息,请查看此答案。

 var regex = @"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)"; var xeger = new Xeger(regex); var result = Regex.IsMatch(xeger.Generate(), regex); // -> Prints 'true' 

我曾经也需要这样的东西,所以我用gui使用上面提到的xeger lib创建了一个简单的程序。 只需从dist文件夹运行.jar(需要jre) https://github.com/ogyct/SampleFromRegex