组合验证

validating with combination

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

但这行不通。

您需要使用\[\]\-使其成为角色的一部分class

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

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);

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

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

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

有点浪费,不过这个版本应该问题不大。 取决于您如何使用该构造;你放什么around/inside吧。

了解 ReDoS attacks