我正在尝试验证密码,但遇到问题。现在,我有下一个验证器的输入:
<form name="RegisterForm">
<input type="password" name="password"
ng-minlength="8"
ng-maxlength="20"
space-restricted
numbers-required
lowercase-required
uppercase-required
special-characters-required
password-validator
required>
</form>
这是小写验证器的示例:
function lowercaseRequired() {
return {
require: 'ngModel',
restrict: 'A',
link: link
};
}
function link(scope, element, attrs, ngModel) {
ngModel.$parsers.unshift(function(value) {
var validationPattern = /(?=.*[a-z])|^$/,
isValid = validationPattern.test(value);
ngModel.$setValidity('lowercaseRequired', isValid);
return isValid ? value : undefined;
}
How i can handle minimum three out of four validations?
- 小写
- 大写
- 特殊字符
- 数字
我考虑过大型正则表达式,但我认为这是一个坏主意。因此,我需要获取一个包含以下内容的密码:最少 8 个字符,最多 20 个字符,不包含空格,并且至少包含四分之三的验证。
最佳答案
答案如下:
^((?=.*[\d])(?=.*[a-z])(?=.*[A-Z])|(?=.*[a-z])(?=.*[A-Z])(?=.*[^\w\d\s])|(?=.*[\d])(?=.*[A-Z])(?=.*[^\w\d\s])|(?=.*[\d])(?=.*[a-z])(?=.*[^\w\d\s])).{8,20}$
<强> REGEXR
地点:
-
^
- 行 anchor 的开头 -
((?=.*[\d])
- 检查数字 -
(?=.*[a-z])
- 检查小写字母 -
(?=.*[A-Z])
- 检查是否大写 -
|(?=.*[a-z]) (?=.*[A-Z]) (?=.*[^\w\d\s])
- 检查特殊字符 -
|(?=.*[\d]) (?=.*[A-Z]) (?=.*[^\w\d\s])|(?=.*[\d]) (?=.*[a-z]) (?=.*[^\w\d\s]))\S{8,20}
- 匹配\S
中的任何字符('8
' 除外空格)在末尾开始字符20
线 anchor
关于javascript - AngularJS 四分之三验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48816570/