如何使用Regex生成有效输入的示例?

时间:2014-06-11 20:51:31

标签: c#

我想通过Regex模式生成有效输入的示例。我使用C# .Net进行编程。像这样:

//this emthod doesn't exists, its an example of funcionality that I want.
Regex.GenerateInputExample("^[0-9]{15}$"); 

所以,这个例子给了我一个可能的值,比如000000000000000。怎么做?

1 个答案:

答案 0 :(得分:0)

因此,这个问题需要一些时间来解决,因为功能没有内置。我将提供一般解决方法:

使用ascii(或unicode)图表找出与正在使用的正则表达式所使用的字符相对应的字符代码(65 = A,69 = D等)

使用这些边界创建随机函数。多边界将需要更多的诡计(A-Z = 26,0-9 = 10,所以从0到35的随机数)


Random random = new Random();
int randomNumber = random.Next(65, 70); // this generates a random number including the bounds of 65-69)

char temp = (char)random;

接下来,您将获取随机生成的字符并将它们一起添加到字符串中。

        int lowerBound = 65, upperBound =69;
        int length = 6;
        char temp;
        int randomNumber;
        string result= "";

        Random rand = new Random();
        for (int a = 0; a <= length; a++)
        {
            randomNumber = rand.Next(lowerBound, upperBound);
            temp = (char)randomNumber;
            result = result + temp;
        }                  //result is the indirect regex generated string

间接给你一个正则表达式生成的字符串。

下一步是从正则表达式中解析信息。由于正则表达式的复杂性,我在下面提供了一个简单的案例,不适用于每个正则表达式。

        Regex bob = new Regex("[A-Z]");

        int lowerBound = Convert.ToInt32(bob.ToString()[1]);
        int upperBound = Convert.ToInt32(bob.ToString()[3]);
        int length = 6; //length of the string to be generated
        char temp;
        int randomNumber;
        string result= "";

        Random rand = new Random();
        for (int a = 0; a <= length; a++)
        {
            randomNumber = rand.Next(lowerBound, upperBound);
            temp = (char)randomNumber;
            result = result + temp;
        }

(这个过程可以简化为课程并使用等)