我有一些jQuery验证代码必须在Selenium上传递一些测试。但是,每次运行测试时,不同的测试都会失败,不同的测试会通过。例如,在一次测试中,密码短路将失败,密码太长将通过。但是,如果我重新运行测试,可能会发生相反的情况!
这是正则表达式:
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测试的任何帮助都会有所帮助和感激,谢谢。
答案 0 :(得分:0)
/^((?<lowerCase>[a-z])|(?<upperCase>[A-Z])|(?<numberOrSymbol>[0-9+_!@#$%^&*.,?-])){6,20}(?(lowerCase)|(?!))(?(upperCase)|(?!))(?(numberOrSymbol)|(?!))$/
从行首开始。
以小写字母,大写字母或NumberOrSymbol取6-20倍,同时计算每种类型的出现次数。
验证每种类型至少发生过一次。
验证我们是否在行尾。
关于问题中出现的正则表达式的注释:它验证了所需符号的存在,但它并不要求pwd中的所有字符都属于“声明”类之一,它会接受字符串“aA3” @ \\\“,作者可能并不打算成为可接受的密码。