developer tip

최소 8 자, 숫자 1 개, 대문자 1 개 및 소문자 1 개를 포함하는 비밀번호에 대한 javascript regex

copycodes 2020. 11. 29. 11:51
반응형

최소 8 자, 숫자 1 개, 대문자 1 개 및 소문자 1 개를 포함하는 비밀번호에 대한 javascript regex


다음 기준을 충족해야하는 암호의 유효성을 검사하는 정규식을 작성하려고합니다.

  • 8 자 이상 포함
  • 1 개 이상의 숫자 포함
  • 하나 이상의 소문자 (az) 포함
  • 1 개 이상의 대문자 (AZ) 포함
  • 0-9a-zA-Z 만 포함

다음을 시도했지만 작동하지 않는 것 같습니다.

http://jsfiddle.net/many_tentacles/Hzuc9/

<input type='button' value='click' class='buttonClick' />
<input type='text' />
<div></div>

과...

$(".buttonClick").click(function () {

    if ($("input[type=text]").filter(function () {
        return this.value.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8})$/);
    })) {
        $("div").text("pass");
    } else {
        $("div").text("fail");
    }

});

어떤 아이디어?


정규식은 다음과 같아야합니다.

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

다음은 설명입니다.

/^
  (?=.*\d)          // should contain at least one digit
  (?=.*[a-z])       // should contain at least one lower case
  (?=.*[A-Z])       // should contain at least one upper case
  [a-zA-Z0-9]{8,}   // should contain at least 8 from the mentioned characters
$/

개별 정규 표현식을 사용하여 다른 부분을 테스트하는 것은 하나의 정규 표현식을 모두 포함하는 것보다 훨씬 쉽습니다. 또한 유효성 검사 기준을 더 쉽게 추가하거나 제거 할 수 있습니다.

또한 귀하의 사용법 .filter()이 잘못되었습니다. 항상 jQuery 객체 (JavaScript에서 진실로 간주 됨)를 반환합니다. 개인적으로 .each()루프를 사용하여 모든 입력을 반복하고 개별 합격 / 불합격 상태를보고합니다. 아래와 같은 것 :

$(".buttonClick").click(function () {

    $("input[type=text]").each(function () {
        var validated =  true;
        if(this.value.length < 8)
            validated = false;
        if(!/\d/.test(this.value))
            validated = false;
        if(!/[a-z]/.test(this.value))
            validated = false;
        if(!/[A-Z]/.test(this.value))
            validated = false;
        if(/[^0-9a-zA-Z]/.test(this.value))
            validated = false;
        $('div').text(validated ? "pass" : "fail");
        // use DOM traversal to select the correct div for this input above
    });
});

작업 데모


최소 8 = {8,}:

str.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8,})$/)

정규식은 정확히 8 자만 허용합니다. {8,}대신 8 개 이상을 지정하는 데 사용 합니다 {8}.

But why would you limit the allowed character range for your passwords? 8-character alphanumeric passwords can be bruteforced by my phone within minutes.

참고URL : https://stackoverflow.com/questions/14850553/javascript-regex-for-password-containing-at-least-8-characters-1-number-1-uppe

반응형