AngularJS 四分之三的验证
AngularJS three out of four validations
我正在尝试验证密码,但遇到了问题。现在,我有下一个验证器的输入:
<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}$
其中:
^
- 行首锚点
((?=.*[\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}
- 匹配来自 8
的任何字符('\S
' 期望空格)在行 anchor 的末尾 20
开始字符
我正在尝试验证密码,但遇到了问题。现在,我有下一个验证器的输入:
<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}$
其中:
^
- 行首锚点((?=.*[\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}
- 匹配来自8
的任何字符('\S
' 期望空格)在行 anchor 的末尾
20
开始字符