2014-05-19 3 views
1

암호를 검증하기 위해 정규 표현식을 작성하려고 시도했지만 유효한 암호에 대해 false를 반환합니다. 다음의암호 유효성 검사를위한 Regex가 올바른 암호에 대해 false를 반환 함

암호가 있어야합니다 적어도 3 :

  • 자리
  • 대문자 문자
  • 소문자 문자
  • 특수 문자

제한 암호에 없다 길이.

@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$" 

은 또한, 나는 정규 표현식을 사용하지 않고이 작업을 수행하는 방법을 완전히 알고 :

내 시도이다. 그러나 이것은 대학 과제를위한 것이며 우리는 반드시 사용해야한다고 들었습니다.

+0

"Ab1"암호가 유효합니까? 또는 "적어도 3"은 각 그룹에서 적어도 3 개의 요소를 의미합니까? –

+0

죄송합니다. 분명히해야합니다. 그것은 각각 3 개 이상을 포함해야합니다. – SuperDicko

+0

암호 Th1sIsSt @ çkOv3rF! 0w는 유효성을 검사해야합니까? –

답변

3

나는 유일한 문제는 이 일치하지 않는다는 것입니다. 모든 문자가 일치합니다.

@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$" 

은 귀하의 조건을 보장하는 선견자로만 구성됩니다. 즉 기본적으로 미리보기를 사용하는 조건이 필요하며 다른 한편으로는 실제 패턴은 빈 문자열과 일치하는 ^$입니다. 이 정규식은 사실을 반환하지 않습니다.

문자를 실제로 일치 시키려면 끝에 .*을 추가하십시오. 귀하의 요구 사항은 선견자에 의해 다루어집니다.

@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3}).*$" 
+0

일부 경우에만 작동합니다. 'gh6y78GH #^%'는'skfhsifcns, edche # £ $ 444'와 같이 두 개의 대문자가 있더라도 유효성을 검사합니다. –

+0

@StevePettifer, 아니요, 대문자가 누락되었습니다. – stema

+0

시도해 보셨습니까? 명시된 요구 사항을 충족시키지 못하더라도 내가 제공 한 두 경우 모두 정규 표현식 이벤트와 일치합니다. –

관련 문제