Reputation: 704
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 like "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?
Upvotes: 14
Views: 6436
Reputation: 19905
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
Upvotes: 8
Reputation: 11201
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'
Upvotes: 8
Reputation: 1131
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
Upvotes: 0