我在angular中创建了一个正则表达式来验证密码,该密码应该有
任何字符或符号的位置都不受限制。
我试过这个regex
/(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z])/
但是上面的正则表达式让任何特殊字符都有效......我只是想要!@#$%这个有效无效
答案 0 :(得分:0)
尝试使用ng-change
侦听器 - 类似于以下HTML:
<input ng-model="pw" ng-change="checkPwPolicy(pw)">
<div ng-hide="passwordPolicyValid">Your password is too weak!</div>
在此表单的控制器范围内结合此Javascript:
function checkPwPolicy(password) {
var valid = true;
// at least 1 number
valid = valid && password.match(/[0-9]/).length > 0;
// at least 1 uppercase
valid = valid && password.match(/[A-Z]/).length > 0;
// ...
$scope.passwordPolicyValid = valid;
}
您可以采取的一些措施来改进此实现,即可以减少更改侦听器的触发次数,在未触及密码时隐藏错误消息,以及向密码策略消息添加更详细的错误。 / p>
答案 1 :(得分:0)
我不确定你想要做的所有事情都可以用于单一的正则表达式。但是你可以使用一个使用一些正则表达式的简单验证函数:
function validate (pass) {
if (
/[A-Z]/.test(pass) && // uppercase letter is required
/[a-z]/.test(pass) && // lowercase letter is required
/[0-9]/.test(pass) && // number is required
/[!@#$%]/.test(pass) && // predefined symbol is required
!/[^A-Za-z0-9!@#$%]/.test(pass) // there is nothing unwanted
) {
return true;
}
return false;
}
Here is jsfiddle表明它有效。