【问题标题】:AngularJS three out of four validationsAngularJS 四分之三的验证
【发布时间】:2018-02-15 21:27:03
【问题描述】:

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

<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 个字符,不包含空格,并且至少包含四分之三的验证。

【问题讨论】:

标签: javascript angularjs regex validation angularjs-directive


【解决方案1】:

答案如下: ^((?=.*[\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 的行锚

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-05-27
    • 2020-10-17
    相关资源
    最近更新 更多