如何为密码标准编写正则表达式代码?

时间:2016-10-21 20:21:59

标签: java

我正在尝试创建一个符合以下条件的正则表达式代码,但到目前为止还没有。

  • 至少两个大写字母
  • 至少两个小写字母
  • 至少一个号码。

这是我的代码: 目前我已经使用这两个表达式来检查长度

{{1}}

.int j是一个变量,用于检查是否满足条件!

1 个答案:

答案 0 :(得分:0)

嗯,我看到了一种非正则表达方式:

public boolean isValidPassword(String s) {
    int lowerCase = 0;
    int upperCase = 0;
    int numeric = 0;
    int special = 0;
    for (int c = 0; i < s.length(); i++) {
        char i = s.charAt(c);
        if (i >= 'A' && i <= 'Z') {
            upperCase++;
        } else if (i >= 'a' && i <= 'z') {
            lowerCase++;
        } else if (i >= '0' && i <= '9') {
            numeric++;
        } else {
            special++;
        }
        //early ending case
        return lowerCase > 1 && upperCase > 1 && numeric > 0;
    }
    return false;
}

如果您愿意,可以使用功能界面抽象早期结束谓词:

@FunctionalInterface
private static interface PasswordMatch {
    public boolean match(int lowerCase, int upperCase, int numbers, int special);
}

public boolean isValidPassword(String s, PasswordMatch matcher) {
    //...
        //in loop
        if (matcher.match(lowerCase, upperCase, numeric, special) {
            return true;
        }
    //...
}

因此使调用变为可变的情况:

if (isValidPassword(/* some pass */, (lower, upper, number, spec)
                -> lowerCase > 1 && upperCase > 1 && numeric > 0)) {
    //etc...
}