javascript - 正则表达式匹配相同类型的字符

标签 javascript regex

我需要一个不能包含超过 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/

相关文章:

javascript - 如何使用正则表达式解析标签?

javascript - 为什么同样的答案?

javascript - 如何在 promise 中执行回调?

python - 正则表达式:匹配 3 个连续的单词

javascript - 正则表达式只返回第一组

java - 正则表达式将 2 个字符替换为 1 个字符

带有 x 轴作为字符串的 Javascript FLOT 组合条形图和折线图

javascript - 根据所选的下拉值隐藏或显示数据

javascript正则表达式不起作用

c++ - 至少一个字符的正则表达式