组合验证
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。
我正在尝试验证 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。