开发者

Is it possible to generate an example string based on a regex pattern?

开发者 https://www.devze.com 2023-01-05 03:11 出处:网络
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 wou

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号