javascript:验证大写和小写

时间:2014-05-01 14:59:45

标签: javascript validation

检查案例时是否有任何选项可以验证最低 2小写 2大写? 这是我正在使用的条件。

function HasMixedCase(passwd){
    if(passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))
        return true;
    else
        return false;
}

演示:http://jsfiddle.net/Ku4mg/

2 个答案:

答案 0 :(得分:7)

编辑参与plalx的评论:

var m;
if( !(m = passwd.match(/[a-z]/g)) || m.length < 2) return false;
if( !(m = passwd.match(/[A-Z]/g)) || m.length < 2) return false;
return true;

尝试在单个正则表达式中做太多事情是灾难的一种方法,最常见的结果是灾难性的回溯。

同样,它使您的代码一次做一件事更具可读性。

答案 1 :(得分:1)

Altough @ NietTheDarkAbsol的回答显示了一个非常有效的方法,我会建议你避免在你的功能中做太多。不要害怕将逻辑拆分成多个可维护的函数。

function textCaseStats(text) {
    return {
        upper: (text.match(/[a-z]/g) || []).length,
        lower: (text.match(/[A-Z]/g) || []).length
    };
}

function hasMixedCase(password) {
    var caseStats = textCaseStats(password);

    return caseStats.lower >= 2 && caseStats.upper >= 2;
}