Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 密码验证正则表达式中添加的数字或特殊字符要求_Javascript_Regex - Fatal编程技术网

Javascript 密码验证正则表达式中添加的数字或特殊字符要求

Javascript 密码验证正则表达式中添加的数字或特殊字符要求,javascript,regex,Javascript,Regex,我需要验证密码:至少一个大写,至少一个小写,至少一个数字或符号,至少8个字符 我有一个正则表达式: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,20}$/ 这可以正常工作,除了>它检查数字和符号上的字符串,但不检查数字或符号上的字符串。还有字符长度8-20,不是至少8,而是给出了范围。我想让它检查数字或符号。有什么想法吗?谢谢,祝你今天愉快 d正向前瞻需要字符串中有一个数字,并且?=.[^a-zA-Z0-9]需要ASCII字母或数

我需要验证密码:至少一个大写,至少一个小写,至少一个数字或符号,至少8个字符

我有一个正则表达式:

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,20}$/
这可以正常工作,除了>它检查数字和符号上的字符串,但不检查数字或符号上的字符串。还有字符长度8-20,不是至少8,而是给出了范围。我想让它检查数字或符号。有什么想法吗?谢谢,祝你今天愉快

d正向前瞻需要字符串中有一个数字,并且?=.[^a-zA-Z0-9]需要ASCII字母或数字以外的字符

要使正则表达式需要ASCII字母或数字以外的数字或字符,请将两个lookahead合并为

(?=.*[^A-Za-z])
基本上,您需要从第二个lookahead中删除0-9,它将需要除ASCII字母以外的任何字符

结果:

/^(?=.*[^A-Za-z])(?=.*[a-z])(?=.*[A-Z]).{8,20}$/
或者,更高效的版本基于:

如果某个空间不特殊,请将其添加到前瞻:

/^(?=[A-Za-z ]*[^A-Za-z ])(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z]).{8,20}$/
            ^          ^

这不是你问题的答案,但对于那些想自己验证密码的人,我可以强烈推荐。删除?=.[^a-zA-Z0-9]并将?=.\d替换为?=.*:\d|[^\w\s],同样,@WiktorStribiżew感谢。发布你的答案,不要评论。我会批准并投票表决。祝你过得愉快所以空格是一个特殊的字符,对吗?
/^(?=[A-Za-z ]*[^A-Za-z ])(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z]).{8,20}$/
            ^          ^