Javascript 使用正则表达式验证给定密码时,不包含字母、数字和特殊字符

Javascript 使用正则表达式验证给定密码时,不包含字母、数字和特殊字符,javascript,regex,Javascript,Regex,我试图在JavaScript中使用正则表达式来验证给定密码是否包含字母、数字和特殊字符。然而,我尝试过的一切都不起作用 我试过使用 /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@"#%$&])[A-Za-z0-9!@"#%$&]{8,30}$/gm 以及为字母、数字和特殊字符创建单独的正则表达式变量: let alpha = /^[A-Za-z]+$/i let numer = /^[0-9]+$/i let special =

我试图在JavaScript中使用正则表达式来验证给定密码是否包含字母、数字和特殊字符。然而,我尝试过的一切都不起作用

我试过使用

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@"#%$&])[A-Za-z0-9!@"#%$&]{8,30}$/gm
以及为字母、数字和特殊字符创建单独的正则表达式变量:

let alpha = /^[A-Za-z]+$/i
let numer = /^[0-9]+$/i
let special = /^[!@#$%^&*(),.?;":{}|<>']/i
let alpha=/^[A-Za-z]+$/i
设numer=/^[0-9]+$/i
让special=/^[!@$%^&*(),.?;“:{}|']/i

当我将password.match(regex)登录到控制台时,我总是看到null,请尝试以下操作:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$
这是很久以前的一篇文章。可能还有其他的。简单搜索SO会找到更多的例子

下面是正则表达式的可视化:

试试这个:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$
这是很久以前的一篇文章。可能还有其他的。简单搜索SO会找到更多的例子

下面是正则表达式的可视化:


我个人会选择单独的正则表达式,当前正则表达式的问题是开头有
^
,结尾有
$
。这意味着密码从头到尾只能包含
[A-Za-z]
。然后检查密码从头到尾是否只包含
[0-9]

const正则表达式={
α:/[A-Za-z]/,,
编号:/[0-9]/,,
特别:/[!@$%^&*(),.?;“:{}|']/,
长度:/^.{8,30}$/
};
[“dgXHUYuDdp”,“zMv4qQfZj3”,“4JXyrsq!J0”,“a5Z!”]。forEach(密码=>{
让valid=Object.values(regex).every(regex=>password.match(regex));
console.log(
密码:“+JSON.stringify(密码)+”\n+
“有效:”+有效
);

});我个人会选择单独的正则表达式,您当前正则表达式的问题是,您在开始时有
^
,在结束时有
$
。这意味着密码从头到尾只能包含
[A-Za-z]
。然后检查密码从头到尾是否只包含
[0-9]

const正则表达式={
α:/[A-Za-z]/,,
编号:/[0-9]/,,
特别:/[!@$%^&*(),.?;“:{}|']/,
长度:/^.{8,30}$/
};
[“dgXHUYuDdp”,“zMv4qQfZj3”,“4JXyrsq!J0”,“a5Z!”]。forEach(密码=>{
让valid=Object.values(regex).every(regex=>password.match(regex));
console.log(
密码:“+JSON.stringify(密码)+”\n+
“有效:”+有效
);

})
虽然我怀疑可能会编写一个正则表达式来进行位置/seuqnce独立匹配,但一想到这个我就头疼。因此,即使我能想出一种方法来实现它,我也不会实现它-代码需要人类可读和可解析。看看你在这里介绍的内容,我觉得我更熟悉iliar的正则表达式比你的正则表达式还多,所以有更多的理由不这样做

您的字母/数字/特殊正则表达式将只匹配包含字母、数字或特殊字符的字符串,而不是混合字符。如果您这样更改它们,则可以检查所有三个正则表达式是否匹配(并转义特殊正则表达式中的元字符):

let alpha=/[A-Za-z]/i;
设numer=/[0-9]/;
let special=/[!@$%\^&*(),\.?;“:{}\124;\']/;
如果(密码匹配(字母)和密码匹配(数字)和密码匹配(特殊)){

虽然我怀疑可能会编写一个正则表达式来进行位置/seuqnce独立匹配,但一想到这一点我就头疼。因此,即使我能想出一种方法来实现它,我也不会实现它-代码需要人类可读和可解析。看看你在这里介绍的内容,我觉得我更像家人了说谎者比你更喜欢正则表达式,所以更有理由不这么做

您的字母/数字/特殊正则表达式将只匹配包含字母、数字或特殊字符的字符串,而不是混合字符。如果您这样更改它们,则可以检查所有三个正则表达式是否匹配(并转义特殊正则表达式中的元字符):

let alpha=/[A-Za-z]/i;
设numer=/[0-9]/;
let special=/[!@$%\^&*(),\.?;“:{}\124;\']/;
如果(密码匹配(字母)和密码匹配(数字)和密码匹配(特殊)){

能否将代码添加到问题而不是图像?我知道这与此无关,但在使用regex验证密码等内容时要小心,确保设置超时,否则很可能会遭受重做攻击。能否将代码添加到问题而不是图像?我知道这与此无关,但在使用regex验证密码时要小心验证密码之类的东西,确保设置一个超时,否则你很可能会受到重做攻击。嗨@nopuck4you,我希望你不介意我在你的帖子中添加可视化效果-我不想为它开始一个单独的答案,因为你自己已经发布了重要的东西!嗨@nopuck4you,我希望你不介意我添加v我不想单独回答,因为你自己已经发布了重要的内容!非常感谢你解决了我的问题!非常感谢你解决了我的问题!