So, this problem would take some time to solve, since the functionality is not built in. I'll give a general way to solve it:
Using an ascii (or unicode) chart find out the character codes that correspond to the characters you are using for your regex (65 =A, 69 = D, etc)
Create a random function with those bounds. Multiple bounds would take a little more trickery (A-Z =26, 0-9 = 10, so a random number from 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;
Next you would take the randomly generated characters and add them together into a string.
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
Indirectly giving you a regex generated string.
The next step is parsing information out of a regex. I've provided a simple case below that will not work for every regex, due to regex complexity.
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;
}
( This process could be streamlined into class and utilized etc)