As far as the simple regex you were trying goes, you can just use:
^.{8,}$
You don't want the forward lookup (?=). See my description of why this is the case at the end.
For simple string length checking, you can just use the StringLength length attribute if you are using asp.net 4.0:
[StringLength(8, MinimumLength=1)]
(Note: as Tommy pointed out in the comments, you would want a regex for the full password checking). If you are looking for more complex password regexes, then I suggest you look at tommy's answer and here and here to begin.
Why (?=) doesn't work
^ - match the start of the string.
.{8,} - Then look forward and see if there are at least 8 characters. (remember forward lookup doesn't change the test position so this will still be the start of the string).
- Have we reached the end ($)? No -> Fail.
Another example is that .+(?=.{8,})$ will fail because there is no such position in the string that is followed by 8 characters and the next character from the test position is the end of string $.
A final example is ^.(?=.{7,}) which will match the first character of an (at least) 8 character string. This is because only the first character is preceeded by the beginning ^
StringLengthattribute