[英]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我也会推荐
length
instead of lenth
length
而不是lenth
validNumber
and validCase
, for example, are elements , which is not clear from their namevalidNumber
和validCase
是elements ,从它们的名称中不清楚
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.