我想通过Regex模式生成有效输入的示例。我使用C# .Net
进行编程。像这样:
//this emthod doesn't exists, its an example of funcionality that I want.
Regex.GenerateInputExample("^[0-9]{15}$");
所以,这个例子给了我一个可能的值,比如000000000000000
。怎么做?
答案 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;
}
(这个过程可以简化为课程并使用等)