2009-08-22 4 views
13

암호에 문자 하나 이상과 숫자가 하나라도 있는지 확인하기 위해 정규 표현식을 쓸 수있는 사람이 있습니까?주어진 암호에 C#에 숫자와 문자가 하나 이상 포함되어 있는지 확인하는 정규식?

사용자 비밀번호는 영숫자 여야하며 정규식을 사용하여이를 확인할 수 있어야합니다. 당신이 하나의 정규식에 더 많은 읽을 수 있습니다 "[a-zA-Z].*\\d|\\d.*[a-zA-Z]"이 있지만 별도의 검사를 사용하려면

+0

Downvoted? 정말? –

+10

@Paco : Stack Overflow가 어려운 질문 만 허용한다는 것을 알지 못했습니다! – LukeH

+0

나는 Luke와 동의한다. 스택 오버플로는 바이트 코드를 디 컴파일하는 데 문제가있는 노련한 전문가 나 'WMI 문서가있는 곳'이 아니어야합니다. –

답변

2
bool isValid = Regex.IsMatch(password, @"[a-zA-Z]") && 
       Regex.IsMatch(password, @"\d"); 
7

.

편집 : 다음과 같을 수 나는 꽤 읽을 찾아 두 검사,,와 접근 방법 :

Regex.IsMatch(password, "\\d") && Regex.IsMatch(password, "[a-zA-Z]") 
+0

그런 다음 영숫자 문자 만 포함되어 있는지 테스트하려면 추가 검사가 필요합니다. –

21

긍정적 예측은 당신이 찾고있는 것입니다. 정규식은 다음과 같습니다

여기
(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+ 

(?=.*[A-Za-z])이 문자열이 적어도 하나의 문자(?=.*[0-9])대로 적어도 하나의 자리을 가지고 주장 주장 긍정적 예측이다. 긍정적 인 미리보기가 일치를 반환하지 않고 일치 여부를 표시한다는 점에 유의해야합니다. 따라서 이전 정규 표현식을 "적어도 하나의 문자가 있다고 주장하고, 적어도 하나의 숫자가 있다고 주장하십시오. 이제 어설 션이 완료되었음을 알았으므로 영숫자를 확인하십시오."

정규식을 매우 복잡하게 만들지 않고도 응용 프로그램의 유효성 검사 요구 사항을 쉽게 결합 할 수 있으므로 매우 흥미 롭습니다. 지금 문자열이 필요한 경우 예를 들어, 정확히 20 문자를 가지고, 당신은 너무 같은 새로운 긍정적 예측 주장을 추가해야합니다

(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+ 

는 희망이 도움이!

+0

왜 안 되니? (? =. * [A-Za-z]) (? =. * [0-9]) [A-Za-z0-9] {20} –

+0

왜 긍정적 인 선견자로'. * '가 필요합니까? 당신이 그것을 생략한다면 어떻게 결과가 달라질 지 이해하지 못합니다. – xr280xr

관련 문제