your programing

기호와 일치하는 정규식 :! $ % ^ & * () _ + | ~-=`{} [] : "; '<>?,. /

lovepro 2020. 10. 14. 08:13
반응형

기호와 일치하는 정규식 :! $ % ^ & * () _ + | ~-=`{} [] : "; '<>?,. /


다음 문자를 포함하는 문자열을 테스트하는 JavaScript에서 Regex 테스트를 만들려고합니다.

!$%^&*()_+|~-=`{}[]:";'<>?,./

관심이 있다면 더 많은 정보 :)

제가 작업중인 매우 멋진 암호 변경 응용 프로그램입니다. 관심이있는 경우 나머지 코드는 여기에 있습니다.

암호 요구 사항을 나열하는 테이블이 있고 최종 사용자가 새 암호를 입력하면 정규식 배열을 테스트하고 해당 테이블 행에 체크 표시를합니다 ... 체크 아웃합니다. validation배열 의 네 번째 항목 대신 .

var validate = function(password){
    valid = true;

    var validation = [
        RegExp(/[a-z]/).test(password), RegExp(/[A-Z]/).test(password), RegExp(/\d/).test(password), 
        RegExp(/\W|_/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password), 
        !RegExp($('#txtUsername').val()).test(password), !RegExp("cisco").test(password), 
        !RegExp(/([a-z]|[0-9])\1\1\1/).test(password), (password.length > 7)
    ]

    $.each(validation, function(i){
        if(this)
            $('.form table tr').eq(i+1).attr('class', 'check');
        else{
            $('.form table tr').eq(i+1).attr('class', '');
            valid = false
        }
    });

    return(valid);

}

예, 해당 서버 측 유효성 검사도 있습니다!


이것에 대한 정규식은 정말 간단합니다. 문자 클래스를 사용하십시오. 하이픈은 문자 클래스의 특수 문자이므로 첫 번째 여야합니다.

/[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/

다른 정규식 메타 문자도 이스케이프해야합니다.

편집 : 하이픈은 문자 범위를 나타내는 데 사용할 수 있으므로 특별합니다. 이 동일한 문자 클래스는 다음과 같은 범위로 단순화 할 수 있습니다.

/[$-/:-?{-~!"^_`\[\]]/

세 가지 범위가 있습니다. '$'는 '/', ':'는 '?', '{'는 '~'입니다. 마지막 문자열은! "^ _`[] 범위로 더 간단하게 표현할 수 없습니다.

ACSII 테이블사용하여 문자 클래스의 범위를 찾으십시오.


가장 간단하고 짧은 방법은 이것을 사용하는 것입니다.

/[\W\S]/

의미 : 숫자, 영문자 ( \W) 또는 공백 문자 ( \S) 가 아닌 모든 문자 .

Jeff의 솔루션만큼 완벽하지는 않지만 훨씬 간단하고 실용성이 다르지 않다고 생각합니다.


// The string must contain at least one special character, escaping reserved RegEx characters to avoid conflict
  const hasSpecial = password => {
    const specialReg = new RegExp(
      '^(?=.*[!@#$%^&*"\\[\\]\\{\\}<>/\\(\\)=\\\\\\-_´+`~\\:;,\\.€\\|])',
    );
    return specialReg.test(password);
  };

'A'의 모든 언어에서 후자를 모두 바꾸고 예를 들어 모든 숫자를 0으로 바꾸려면 다음을 수행하십시오.

return str.replace(/[^\s!-@[-`{-~]/g, "A").replace(/\d/g, "0");

참고 URL : https://stackoverflow.com/questions/8359566/regex-to-match-symbols

반응형