programing

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

telebox 2023. 10. 4. 21:14
반응형

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

다음 조건을 충족해야 하는 암호를 검증하기 위해 정규식을 작성하려고 합니다.

  • 8자 이상 포함
  • 최소 1개의 숫자를 포함합니다.
  • 소문자(a-z)를 하나 이상 포함합니다.
  • 하나 이상의 대문자(A-Z) 포함
  • 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}.

그런데 비밀번호에 허용되는 문자 범위를 제한하는 이유가 무엇입니까?8자 영숫자 비밀번호는 몇 분 안에 휴대전화로 강제 사용할 수 있습니다.

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

반응형