5
^(?=[\w\-%&?#=]+\d)(?=[\w\-%&?#=]+[a-zA-Z])[\w\-%&?#=]{8,12}$ 

자바 스크립트 정규식 호환성

  • 은 의무적으로 한 문자와 숫자
  • 을 포함하여 최소 8 ~ 20 문자를 포함해야합니다, 자바 스크립트 기반의 새로운 패스워드 검사에서 아래의 조건에 일치하는 의미되었다 ?은 다음의 특수 문자 중 하나를 포함 할 수있다 : %, &, _, #, =, -
  • 공백을 가질 수 없습니다를

위의 정규 표현식에서 goog123#는 FF3.5와 (과) 일치했습니다. 그러나 이것은 IE6에서 실패합니다. 아무도 여기서 무엇이 잘못되었는지 아는 사람이 있습니까? 호환성 문제입니까?

자바 스크립트는 정규식 문제의 번호가 일치하는

function fnIsPassword(strInput) 
{ 
    alert("strInput : " + strInput); 
    var regExp =/^(?=.{0,19}\d)(?=.{0,19}[a-zA-Z])[\w%&?#=-]{8,20}$/; 
    if(strInput.length > 0){ 
    return (regExp.test(strInput)); 
    } 
    return false; 
} 
alert(fnIsPassword("1231231")); //false 
alert(fnIsPassword("sdfa4gggggg")); //FF: true, false in IE 
alert(fnIsPassword("goog1234#")); //FF: true , false in IE 
+12

입니다. –

+0

@Rubens 오랫동안 들었던 가장 재미 있고 정확한 진술 일 가능성이 높습니다. – Chris

답변

1

이 내가 어떤 체질 찾을 것입니다 대신이 일을보십시오.

  1. 발생 횟수가 적을 때 카운팅은 첫 번째 미리보기 일치 끝에서부터 시작됩니다. 그럼에도 불구하고 최종 일치는 문자열 시작 부분에서만 이루어집니다.
  2. 상위 수의 경우 동작이 예상대로입니다. 뭔가 IE6에 실패 할 경우

이 문제에 대한 최종 정규식은 아무 문제가 없습니다,

/(?=^[\w%&?#=-]{8,12}$)(?=.+\d)(?=.+[a-zA-Z]).+/ 
4

을 테스트하는 데 사용됩니다. 이다

 
^(?=.{,19}\d)(?=.{,19}[a-zA-Z])[\w%&?#=-]{8,20}$ 

:

 
^     # start-of-string 
(?=.{,19}\d)   # look-ahead: a digit within 20 chars 
(?=.{,19}[a-zA-Z]) # look-ahead: a letter within 20 chars 
[\w%&?#=-]{8,20}  # 8 to 20 chars of your allowed range 
$     # end-of-string 
+0

tomalak에게 감사드립니다. 그러나 문제는 여전히 남아 있습니다. 앞에서 지정한대로 javascript에서 regExp를 사용하여 일치 검사를 수행합니다. 내 테스트 스크립트를 여기에 게시합니다. function fnIsPassword (strInput) { alert ("strInput :"+ strInput);var regExp =/^ (? = {0,19} \ d) (? =. {0,19} [a-zA-Z]) [\ w % &? # = -] {8,20} $ /; if (strInput.length> 0) { return (regExp.test (strInput)); } false를 반환합니다. } 경고 (fnIsPassword ("1231231")); // false 경고 (fnIsPassword ("sdfa4gggggg")); // FF : IE6에서 true, false 경고 (fnIsPassword ("goog1234 #")); // FF : IE6에서는 true, false 이고 IE6는 고통입니다. – mays

+0

서식을 보내 주셔서 죄송합니다. 당신이 짐작 했겠지만, 여기에 새로운 것이 있습니다. – mays

+0

Windows XP에서 JScript로 테스트 스크립트를 시험해 보았습니다. (IE6는 JScript 5.6을 사용합니다.) 처음에는 0 (= false)을, 다른 두 가지 테스트에서는 -1 (= true)을 올바르게 반환합니다. .js 파일에 저장하고 자체적으로 시도 할 수 있습니까? – Tomalak

관련 문제