我需要一个不能包含超过 3 个相同类型的连续字符的正则表达式
ABC - valid
@@@ - valid
123 - valid
ABCD - not valid
ABC!@# - valid
最佳答案
使用
if (!/[a-z]{4}|\d{4}|[^a-z\d]{4}/i.test(s)) { console.log("valid"); }
参见 regex demo
/[a-z]{4}|\d{4}|[^a-z\d]{4}/i
正则表达式将以不区分大小写的方式匹配(由于 /i
) 4 个连续的 ASCII 字母 ([a-z]{4}
) 或 4 个连续的数字 (\d{4}
),或 4 个 ASCII 以外的字符字母和数字 ([^a-z\d]{4}
)。
只要找到匹配项,!/regex/.test()
检查就会返回 false。
var strs = ['ABC','@@@','123','ABC!@#','ABCD'];
var rx = /[a-z]{4}|\d{4}|[^a-z\d]{4}/i;
for (var s of strs) {
if (!rx.test(s)) {
console.log(s, ": valid");
} else {
console.log(s, ": invalid");
}
}
关于javascript - 正则表达式匹配相同类型的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882467/