In my application the user can enter his own regex pattern into a text box so he can force a certain input for another user/text box. Is it possible for the user to see an example of a string that would match the regex he has entered? For example if he was to enter: ^[A-Z]{2}$
, it would generate a string l开发者_如何学Goike "XX
" to show the user he can only enter two capital letters.
If there's no easy way to accomplish this (and I assume there isn't), how difficult would it be to build? Or does something like this already exist?
Check out Xeger. It looks like it can do what you want. It's in Java though.
Here is an example from the test suite:
@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));
}
}
Update: thanks to Nikos Baxevanis, the dk.brics.automaton have been ported to C# at https://github.com/moodmosaic/Fare
For C# you may also want to look at project Fare. For more details have a look at this answer.
Example
var regex = @"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)";
var xeger = new Xeger(regex);
var result = Regex.IsMatch(xeger.Generate(), regex);
// -> Prints 'true'
I once needed such thing too, so I created a simple program with gui using xeger lib mentioned above. Simply run .jar from dist folder (jre is required) https://github.com/ogyct/SampleFromRegex
精彩评论