강력한 암호를 사용하는 정규식을 작성하려고합니다. 내가 "qwer1234의 $"를 입력하면Javascript RegExp.test not working
/* Regular expression explained
o Must contain at least one number: (?=.*\d)
o Must contain at least one letter: (?=.*[a-zA-Z])
o Must contain at least one symbol: (?=.*[[email protected]#$*_=|?{}\[\]~\-,.])
o No whitespace: (?=\S+$)
o Length 8 - 25 characters long: .{8,25}
*/
pass = document.getElementById('password').value;
var PwdRegExpStr = "^(?=.*\d)(?=.*[a-zA-Z])(?=.*[[email protected]#$*_=|?{}\[\]~\-,.])(?=\S+$).{8,25}$"
var PwdRegExp = new RegExp(PwdRegExpStr);
var PwdRegExpStr2 = "^.*(?=.{8,25})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$?]).*$"
var PwdRegExp2 = new RegExp(PwdRegExpStr2);
var patt = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[[email protected]#$*_=|?{}\[\]~\-,.])(?=\S+$).{8,25}$/
var patt2 = /^.*(?=.{8,25})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$/
alert("Pass:"+pass+" = "+PwdRegExp.test(pass)+" = "+PwdRegExp2.test(pass)+" = "+patt.test(pass)+" = "+patt2.test(pass));
나는 다음과 같은 결과를보고 있어요 : 패스 : qwer1234 $ = 거짓 거짓 = TRUE = TRUE
당신은 그들이 모두하지 않은 이유를 내가 이해하는 데 도움이 사실을 평가합니까?
감사합니다.
아마도 정규식을 사용하여 _validate_ 암호를 사용하지 않는 것이 좋습니다. – devnull
그건 이상한데, 난 좀 이상하다. 어느 쪽이든, (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) 식 ('/^abc $ /. test ('abc ')') 가능한 경우 JavaScript에서. 그리고 그것은 '사실'을 돌려주는 것입니다. – Sam
감사 샘, 사실 자바 스크립트 구성에서 최소 암호 길이를 전달 해요. 그래서 RegExp 버전을 사용하여 정규 표현식을 정의하기 전에 문자열에 연결해야합니다. – Giraffe