在我的应用程序中,用户可以将自己的正则表达式模式输入到文本框中,这样他就可以强制为另一个用户/文本框输入特定的输入。用户是否可以查看与他输入的正则表达式匹配的字符串示例?例如,如果他要输入:^[A-Z]{2}$
,则会生成类似“XX
”的字符串,以向用户显示他只能输入两个大写字母。
如果没有简单的方法来实现这一目标(而且我认为没有),那么构建有多难?或者这样的事情是否已经存在?
答案 0 :(得分:8)
结帐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已被移植到https://github.com/moodmosaic/Fare的 C#
答案 1 :(得分:8)
对于C#,您可能还想查看项目Fare。有关详细信息,请查看this答案。
示例强>
var regex = @"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)";
var xeger = new Xeger(regex);
var result = Regex.IsMatch(xeger.Generate(), regex);
// -> Prints 'true'
答案 2 :(得分:0)
我曾经也需要这样的东西,所以我用gui使用上面提到的xeger lib创建了一个简单的程序。只需从dist文件夹运行.jar(需要jre) https://github.com/ogyct/SampleFromRegex