0

我有一些必须通过 Selenium 测试的 jQuery 验证代码。但是,每次我运行测试时,不同的失败和不同的通过。例如,在一次测试中,密码太短会失败,密码太长会通过。但是,如果我重新运行测试,可能会发生相反的情况!

这是正则表达式:

var password = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*(_|[-+_!@#$%^&*.,?])).{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."));
});

通过 Selenium 测试的任何帮助都会有所帮助和感激,谢谢。

4

1 回答 1

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

从行首开始。

取小写字母、大写字母或 NumberOrSymbol 的 6-20 次,同时计算每种类型的出现次数。

验证每种类型至少出现一次。

验证我们是否在行尾。

关于问题中出现的正则表达式的注意事项:它验证是否存在所需的符号,但它不要求 pwd 中的所有字符都属于“指定”类之一,例如它会接受字符串“aA3@\\ \",作者可能不打算将其作为可接受的密码。

于 2012-10-23T16:08:44.840 回答