Edit: TL;DR: Regex are not the tool for the job, and the job doesn't need to be done.
Regex is not the solution to the problem, and AFAIK it is impossible to use it to solve your problem. (But don't take my word for it, I bet someone wrote some funky extension to an esoteric Regex engine that does just this)
If it is possible, the solution will be unreadable. It is better to just check the result of Count.
Something along the lines of (haven't actually compiled this):
bool IsPasswordValid(string pw)
{
return pw.Length == 8 &&
pw.Count(char.IsNumber) == 6 &&
pw.Count(char.IsLetter) == 2;
}
Notes:
Regular Expressions are (is?) a tool that is used to check a string against a pattern. The simpler the pattern, the easier it is to write a regex for it.
Since you want your password to have 2-chars of a set anywhere in the string, and 6 character of another set also anywhere in the string, it is very hard (or even impossible) to create such a pattern.
If your problem was "I want the password to start with 2 digits and end with 6 letters", the answer would've been trivial, but since the digits and letters can be separate and anywhere in the string, it is not as trivial.
Also, most of the time, enforcing password patterns does not increase security. If you have to do anything, enforce a sane minimum length ans stop there.