我遇到了用于密码验证的正则表达式:
(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[^a-zA-Z\d])(?=\S+$).{8,}
关于这个正则表达式,我只有两件事不清楚:
.*
使用的是什么以及为什么没有它们这个正则表达式不起作用?
有什么区别/好处或者使用[\d]
代替\d
,因为正则表达式在两种情况下都运行良好
答案 0 :(得分:1)
.*
匹配任何字符序列; .
匹配任何字符(除了换行符,此处不相关)和*
匹配前面的模式中的零个或多个。这在前瞻中用于在密码中的任何位置搜索匹配项。如果您没有它,那么它将要求您按特定顺序具有这些类型的字符:小写字母后跟大写字母后跟数字。对于.*
,这意味着密码必须至少包含其中一个密码,但它们可以位于密码中的任何位置。
\d
和[\d]
之间没有区别。写这篇文章的人可能只是习惯使用括号,或者更容易修改它以将其他字符放入字符类中。