在正则表达式中使用“。*”进行密码验证

时间:2017-01-26 00:17:52

标签: regex validation regex-lookarounds

我遇到了用于密码验证的正则表达式:

(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[^a-zA-Z\d])(?=\S+$).{8,}

关于这个正则表达式,我只有两件事不清楚:

  1. .*使用的是什么以及为什么没有它们这个正则表达式不起作用?

  2. 有什么区别/好处或者使用[\d]代替\d,因为正则表达式在两种情况下都运行良好

1 个答案:

答案 0 :(得分:1)

  1. .*匹配任何字符序列; .匹配任何字符(除了换行符,此处不相关)和*匹配前面的模式中的零个或多个。这在前瞻中用于在密码中的任何位置搜索匹配项。如果您没有它,那么它将要求您按特定顺序具有这些类型的字符:小写字母后跟大写字母后跟数字。对于.*,这意味着密码必须至少包含其中一个密码,但它们可以位于密码中的任何位置。

  2. \d[\d]之间没有区别。写这篇文章的人可能只是习惯使用括号,或者更容易修改它以将其他字符放入字符类中。