2012-10-23 3 views
0

셀레늄에 대한 몇 가지 테스트를 통과해야하는 jQuery 유효성 검사 코드가 있습니다. 그러나 테스트를 실행할 때마다 다른 테스트가 실패하고 다른 테스트가 실패합니다. 예를 들어, 한 번의 테스트에서 짧은 암호가 실패하고 암호가 너무 길어집니다. 그러나 테스트를 다시 실행하면 그 반대가 발생할 수 있습니다! jQuery/regex 실패한 셀렌 IDE 테스트

은 정규식 :

var password = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*(_|[[email protected]#$%^&*.,?])).{6,20}$/; 

그리고 이것은 jQuery를하다 :

if($('#password').val() ==""){ 
$('#passwordErrorMsg').text("Your password must be between 6 and 20 characters. It must contain a mixture of upper and lower case letters, and at least one number or symbol."); 
}   
else if(password.test($('#password').val())){  
$('#passwordErrorMsg').text("OK"); 
}  
else($('#passwordErrorMsg').text("Your password must be between 6 and 20 characters. It must contain a mixture of upper and lower case letters, and at least one number or symbol.")); 
}); 

덕분에, 도움 및 감사하겠습니다 셀레늄 테스트를 통과에 어떤 도움.

+0

@roasted, 나는 정규 표현식이 괜찮다고 생각한다 ... 그냥 필요한 모든 심볼을 미리보기로 확인한 다음 문자열 길이를 테스트한다. @ user1766599. 네 번째 미리보기에서'_ |'를 제거 할 수 있습니다. 그것은 문자 클래스에 의해 처리되어야합니다. (그래도 문제가 해결되지는 않습니다.) 또한 귀하의 레이저 오류 메시지가 정규식에 맞지 않습니다. 정규식에는 숫자 ** 및 ** 기호가 필요합니다. –

+0

호 좋아, 나는 그것을 보지 못했다 "그것은 대소 문자와 적어도 하나의 숫자 또는 기호가 혼합되어 있어야한다." ... –

답변

0
/^((?<lowerCase>[a-z])|(?<upperCase>[A-Z])|(?<numberOrSymbol>[[email protected]#$%^&*.,?-])){6,20}(?(lowerCase)|(?!))(?(upperCase)|(?!))(?(numberOrSymbol)|(?!))$/ 

시작 부분에서 시작하십시오.

소문자 또는 대문자 또는 NumberOrSymbol 중 6-20 배를 취하면서 각 유형의 발생을 계산합니다.

각 유형이 적어도 한 번 이상 발생했는지 확인하십시오.

줄 끝 부분에 있는지 확인하십시오.

질문에 표시된 정규 표현식에 대한 참고 사항 : 필수 기호의 존재를 확인하지만 pwd의 모든 문자가 "명시된"클래스 중 하나에 속할 필요는 없습니다. 예를 들어 " aA3 @ \\\ "이며, 이는 작성자가 허용 할 수있는 암호가 아닐 수도 있습니다.

관련 문제