结合验证

时间:2021-05-25 22:34:15

标签: javascript validation passwords

我正在尝试验证 javascript 中的密码。有人可以阐明创建完美的正则表达式或验证它的另一种方式。我尝试了各种方法但没有奏效

但这不起作用。

2 个答案:

答案 0 :(得分:1)

需要使用\[\]\-使其成为字符类的一部分

([\d.\[!@#$%^&()\-_=+{};:,<.>\]]){2}

REGEX

const strArr = ["1@", "11", "#$", "aa", "aa1#"];

const regex = /([\d.\[!@#$%^&()\-_=+{};:,<.>\]]){2}/g;

const result = strArr.flatMap((s) => {
  const matches = s.match(regex);
  if (matches && matches.length) console.log("NOT SELECTED");
  else console.log("SELECTED");
  return matches;
});
console.log(result);

答案 1 :(得分:1)

您可以滥用每个字符的前瞻来确定没有索引后跟两个指定的字符。

const regex = /^(?:(?![\d!@#$%^&()-_=+{};:,<.>]{2}).)+$/;

["1@", "11", "#$", "aa", "aa1#"].forEach(str => {
  console.log(str, regex.test(str));
});

有点浪费,不过在这个版本应该问题不大。 取决于您如何使用该构造;你在它周围/里面放了什么。

了解ReDoS attacks

相关问题