This question already has answers here:
Regex for password must contain at least eight characters, at least one number and both lower and uppercase letters and special characters
                                
                                    (28个答案)
                                
                        
                                3年前关闭。
            
                    
我正在尝试创建用于密码验证的正则表达式。这是要求。


最小长度8。
至少1个大写字母。
至少1个小写字母。
至少1个数字。
这些字符中的0个或更多!@#$%^&*?_〜()-。
允许a-z。
允许A-Z。
允许0-9。


到目前为止,我的表情是:

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*?_~()-]*).*$

这种表达方式最有效,除非我需要它只允许5-9子弹。现在,它将允许未指定的字符,例如+=

我如何修改此表达式以仅允许5-9子弹且不允许其他字符?

最佳答案

您不需要对第一个条件和第五个条件进行超前检查-您可以在最终比赛中全部检查,例如

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\w!@#$%^&*?~()-]{8,}$


使用先行检查条件2-4。对于实际匹配,我们需要您允许的字符中至少有8个字符。我使用\wa-zA-Z0-9_ intead来使内容更短一些。

您可以看到它在here下工作。

网站说明:限制密码中的字符通常被视为一个坏主意。 xkcd也有关于密码的内容。

关于javascript - 用于密码验证的RegEx,仅特定字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38029249/

10-09 23:11
查看更多