2011-08-23 8 views
2

이 정규식이 작동하지 않는 이유는 무엇입니까? 문자열에 암호가있는 문자열 만 거부합니다.

Console.WriteLine(Regex.IsMatch(password, "(?!^[a-zA-Z]*$)")); 

표현 앞서 부정적인 모습을 포함 당신이 볼 수 있듯이

, 그래서 기본적으로 문자열 시작하고 알파벳으로 끝나는 경우 그것을 거부한다. 하지만 내가 입력 한 내용에 상관없이 항상 사실입니다. 왜 이런 일이 일어나는 걸까요?

+3

"비밀번호 만 문자열 문자열"... 무엇을 :

사용이 시작 또는 숫자로 끝나지 않는 모든 입력에 맞게? – BoltClock

+0

그래서 첫 번째와 마지막 문자가 문자이고 다른 문자는 모두 받아들이는 문자열을 거부하고 싶습니까? – alun

+0

그는 Regex가 [a-zA-Z]로 시작하거나 [a-zA-Z]로 끝나는 모든 문자열과 일치하지 않기를 원한다고 생각하지만 위의 내용은 일치합니다 –

답변

5

정규식 뒤에는 순수한 영숫자 문자열이 나오지 않습니다. 그래서 모든 입력이 일치합니다. Lookahead는 일치하는 항목의 일부가 아니라 단지 조건 일 뿐이라는 것을 기억하십시오.

"^[^a-z](.*[^a-z])?$" 
관련 문제