检查案例时是否有任何选项可以验证最低 2小写和 2大写? 这是我正在使用的条件。
function HasMixedCase(passwd){
if(passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))
return true;
else
return false;
}
答案 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;
}