我正在尝试使用正则表达式验证密码。密码必须遵循以下策略:
- 最少 8 个字符
- 最多 15 个
- 至少一个大写字母
- 至少一个小写字母
- 至少一位数
- 没有空格
- 至少 1 个特殊字符
我正在使用这个有效的表达式,但问题是它允许我使用空格:
regexp_password = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,15}/;
我正在尝试使用正则表达式验证密码。密码必须遵循以下策略:
我正在使用这个有效的表达式,但问题是它允许我使用空格:
regexp_password = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,15}/;
试试下面的正则表达式:
问题是这部分正则表达式
对集合中的 8 个字符感到满意。也就是说,在第八个字符之后,您的正则表达式允许任何内容。
您需要做的是在最后缩小它,以便它只接受字符串,在允许的字符集的 8 到 15 个字符之后,字符串结束。
TL;DR:必须
$
在末尾添加。经过几次尝试我无法实现它,因为正如他们评论的那样,这种方法不是很安全。所以我所做的是之前的验证,以检测它是否有任何空白
它可以验证您的正则表达式,并且确实某些带有空格的情况是有效的。
我认为您可以在输入之前删除它们,然后使用您的正则表达式进行验证。
您可以使用
.replace(/ /g,'')
删除空格这是一个小jsfiddle
我们必须用 否定空格,
[^'\s]
所以完整的表达式看起来像这样:在这里试试
我认为这部分:
它应该是这样的:
并且以这种方式它从头到尾评估整个表达式,并且没有必要否认空格,因为它只会接受你告诉它的字符。