2012-06-01 2 views
1

I 자바 스크립트에서 암호 유효성 검사에 대한 다음과 같은 정규 표현식이 있습니다정규식

^[!#\$%\(\)\*,\-\./:;=\[email protected]\[\\\]\^_`\{\|\}~a-zA-Z0-9]*$ 

    <script type="text/javascript"> 
     var regex = "^[!#\$%\(\)\*,\-\./:;=\[email protected]\[\\\]\^_`\{\|\}~a-zA-Z0-9]*$"; 
     var value = 'test'; 
     if (value.match(regex) == false) { 
      alert('password invalid'); 
     } 
    </script> 

정규식 규칙은 다음과 같습니다

  • 12-25 문자를
  • 적어도 하나의 대문자
  • 적어도 하나의 소문자
  • 적어도 하나의 숫자
  • ! (10) 특수 문자의
  • 적어도 하나을 # $ %의() * -/:;.? = @ []^_`{|} ~

그러나, 정규식하지 않는 것 작업. 모든 문자와 일치합니다. 이 문제를 어떻게 해결할 수 있습니까?

+1

처음으로 나는 12-25 글자 제한을 적용하는 그 정규 표현식을 어디에도 보지 못했다. 당신은 방금 "0 이상"을 의미하는 *을 사용하는 것 같습니다. 현재 정규 표현식은 다음과 같이 읽습니다. 시작 - 네 글 머리표에서 임의의 문자 수 (0 포함) - 끝 – Ina

+0

3 개의 정규식으로 정규식을 나눕니다. 모든 규칙을 확인하십시오. – gaussblurinc

답변

1

긍정적 인 Lookahead를 사용하면 정규식을 한 번만 호출하여 유효성을 검사 할 수 있습니다. 이 정규식을 사용

var regex = 
    /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!#$%()\*,/:;[email protected]\[\\\]\^_`{}|.-])^.{12,25}$/; 
var value = 'aaaAaaaaa?test2'; 
if (!value.match(regex)) 
    document.writeln('invalid'); 
else 
    document.writeln('valid'); 

See this code live in action

1

시도 :

/^(?=(?:.*[a-z]){1})(?=(?:.*[A-Z]){1})(?=(?:.*\d){1})(?=(?:.*[!#$%()*,-./:;[email protected][]^_`{|}~ ]){1,}).{12,25}$/ 
1

이 정규식 작동 :

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[-|^!#$%()*,./:;[email protected]_`{}~[\]]).{12,25}$ 

그것은 적어도 1이 있는지 확인하기 위해 내다의 기술을 사용 숫자, 소문자 숯, ...

또한 비슷한 질문에 Regex expression for password rules을 보아라.

+0

당신은 어떤 언어를 사용하고 있습니까? – buckley