简体   繁体   English

Javascript - 如何检查所有 RegExp 是否为真?

[英]Javascript - how to check if all RegExp are true?

I have a little problem.我有一个小问题。 this code is used as password validator.此代码用作密码验证器。

classlist.add create checked icon when regexp return true.当正则表达式返回 true 时,classlist.add 创建选中图标。

How can I add a new class for all, when all regexp are true?当所有正则表达式都为真时,如何为所有人添加新的 class? Sorry for my English and thks for your help.对不起我的英语和谢谢你的帮助。

elf.controlPassword = function (event) {

    const lenthNoSpace = new RegExp(/^(\S{8,20})$/);
    const hasNumber = new RegExp(/\d+/);
    const hasUpperCaseLowerCase = new RegExp(/(?=.*[A-Z])(?=.*[a-z])/);
    const hasSpecialChar = new RegExp(/[^A-Za-z0-9\s]/);

    const value = event.target.value;

    toggleCheck(value, lenthNoSpace, validLenth);
    toggleCheck(value, hasNumber, validNumber);
    toggleCheck(value, hasUpperCaseLowerCase, validCase);
    toggleCheck(value, hasSpecialChar, validSpecialChar);
}

const toggleCheck = function (value, regex, display) {
    if (regex.test(value) === true) {
        display.classList.remove('icon-dot');
        display.classList.add('coucoutest');

        return 1;
    }
    else
  {
        display.classList.remove('coucoutest');
        display.classList.add('icon-dot');

        return 0;
    }
};

You can put the results of all the toggleCheck calls into an array, then check that all values are 1:您可以将所有toggleCheck调用的结果放入一个数组中,然后检查所有值是否为 1:

const results = [
    toggleCheck(value, lenthNoSpace, validLenth),
    toggleCheck(value, hasNumber, validNumber),
    toggleCheck(value, hasUpperCaseLowerCase, validCase),
    toggleCheck(value, hasSpecialChar, validSpecialChar),
];
if (results.every(r => r === 1)) {
  for (const display of [validLenth, validNumber, validCase, validSpecialChar]) {
    display.classList.add('somethingWhenAllRegexPass');
  }
}

I'd also recommend我也会推荐

  • Using proper spelling to avoid bugs - you probably want length instead of lenth使用正确的拼写来避免错误——你可能想要length而不是lenth
  • Use more precise variable names - it sounds like validNumber and validCase , for example, are elements , which is not clear from their name使用更精确的变量名称 - 例如,它听起来像validNumbervalidCaseelements ,从它们的名称中不清楚

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM