[javascript] 암호에 대한 정규식은 8 자 이상, 하나 이상의 숫자 및 소문자와 특수 문자를 모두 포함해야합니다.

정규식으로 확인하고 싶습니다.

비밀번호에는 하나 이상의 숫자를 포함하여 8 자 이상이 포함되며 소문자 및 대문자와 특수 문자 (예 : #, ?)가 모두 포함 !됩니다.

기존 비밀번호이거나 사용자 이름 "password", 또는"websitename"

그리고 여기에 대문자, 소문자, 숫자 또는 특수 문자를 포함하여 8 자에 대한 유효성 검사 표현식이 있습니다.

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

암호로 쓰려면 대문자, 특수 문자 및 영숫자를 포함하여 8 자 여야 합니까?



답변

최소 8 자, 하나 이상의 문자와 하나의 숫자 :

"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"

최소 8 자, 하나 이상의 문자, 하나의 숫자 및 하나의 특수 문자 :

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"

최소 8 자, 하나 이상의 대문자, 하나의 소문자 및 하나의 숫자 :

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

최소 8 자, 하나 이상의 대문자, 하나의 소문자, 하나의 숫자 및 하나의 특수 문자 :

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"

최소 8 자 및 최대 10 자, 하나 이상의 대문자, 하나의 소문자, 하나의 숫자 및 하나의 특수 문자 :

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"


답변

이 정규식을 여러 lookahead 어설 션 (조건) 과 함께 사용할 수 있습니다 .

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$

이 정규 표현식은 다음 규칙을 시행합니다.

  • 적어도 하나의 대문자 영어 편지 ,(?=.*?[A-Z])
  • 영문 소문자 1 자 이상 (?=.*?[a-z])
  • 적어도 하나의 숫자 (?=.*?[0-9])
  • 하나 이상의 특수 문자 (?=.*?[#?!@$%^&*-])
  • 최소 길이 8 .{8,}(앵커 포함)

답변

정규 표현식에는 AND 연산자가 없으므로 유효성이 무언가 다른 것으로 정의되어있을 때 유효한 암호와 일치하는 정규 표현식을 작성하는 것은 매우 어렵습니다.

그러나 정규식에는 OR 연산자가 있으므로 DeMorgan 정리를 적용하고 유효하지 않은 비밀번호와 일치하는 정규식을 작성하십시오.

8 자 미만으로 무엇이든 또는 어떤 번호가 무엇이든 또는 어떤 대문자 무엇이든 또는 어떤 소문자 또는 아무것도 또는 특수 문자 아무것도.

그래서:

^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$

일치하는 것이 있으면 잘못된 암호입니다.


답변

@anubhava의 대답에 대한 작은 개선 사항 : 특수 문자는 키보드의 문자로 제한되므로 특수 문자에 이것을 사용하십시오.

^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$

이 정규 표현식은 다음 규칙을 시행합니다.

  • 하나 이상의 대문자 영어
  • 하나 이상의 소문자 영문
  • 하나 이상의 숫자
  • 하나 이상의 특수 문자
  • 최소 길이 8

답변

제 상황에서 가장 인기있는 답변을 따르는 데 어려움이있었습니다. 예를 들어, 내 검증은 다음과 같은 문자로 실패했다 ;[. 나는 특수 문자를 화이트리스트에 [^\w\s]올리는 데 관심이 없었기 때문에 대신 단어가 아닌 문자 (숫자를 포함)와 공백이 아닌 문자를 테스트로 사용하십시오. 요약하면 다음과 같습니다.

  • 최소한 8문자
  • 1숫자 이상
  • 적어도 1소문자
  • 적어도 1대문자
  • 적어도 1특별한 성격

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/

JSFiddle Link- 다양한 사례를 다루는 간단한 데모


답변

같은 없음 영어 글자 수보다 “일반적인”버전 (?), 특수 문자 .

^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$

var pwdList = [
    '@@V4-\3Z`zTzM{>k',
    '12qw!"QW12',
    '123qweASD!"#',
    '1qA!"#$%&',
    'Günther32',
    '123456789',
    'qweASD123',
    'qweqQWEQWEqw',
    '12qwAS!'
  ],
  re = /^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$/;

  pwdList.forEach(function (pw) {
    document.write('<span style="color:'+ (re.test(pw) ? 'green':'red') + '">' + pw + '</span><br/>');
  });


답변

JavaScript 파일을 가져옵니다 jquery.validate.min.js.

이 방법을 사용할 수 있습니다 :

$.validator.addMethod("pwcheck", function (value) {
    return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
});
  1. 하나 이상의 대문자 영어
  2. 하나 이상의 소문자 영문
  3. 하나 이상의 숫자
  4. 하나 이상의 특수 문자