我正在尝试验证 javascript 中的密码。有人可以阐明创建完美的正则表达式或验证它的另一种方式。我尝试了各种方法但没有奏效
但这不起作用。
答案 0 :(得分:1)
需要使用\[
、\]
、\-
使其成为字符类的一部分
([\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);
答案 1 :(得分:1)
您可以滥用每个字符的前瞻来确定没有索引后跟两个指定的字符。
const regex = /^(?:(?![\d!@#$%^&()-_=+{};:,<.>]{2}).)+$/;
["1@", "11", "#$", "aa", "aa1#"].forEach(str => {
console.log(str, regex.test(str));
});
有点浪费,不过在这个版本应该问题不大。 取决于您如何使用该构造;你在它周围/里面放了什么。