AngularJS四分之三的验证

时间:2018-02-15 21:27:03

标签: javascript angularjs regex validation angularjs-directive

我试图验证密码,但我遇到了问题。现在,我有一个输入下一个验证器:

<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;

}
  

我如何处理四分之三的验证?

  • 小写
  • 大写
  • 特殊字符

我考虑过大正则表达式,但我认为这是一个坏主意。因此,我需要获得一个密码,其中包含:最少8个字符,最多20个字符,不包含空格,并且至少包含四个验证中的三个。

1 个答案:

答案 0 :(得分:0)

以下是答案: ^((?=.*[\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

其中:

  • ^ - 行锚的开头
  • ((?=.*[\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处的字符