“的使用”*&引用;在regex中进行密码验证

“的使用”*&引用;在regex中进行密码验证,regex,validation,regex-lookarounds,Regex,Validation,Regex Lookarounds,我遇到了一个用于密码验证的正则表达式: (?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[^a-zA-Z\d])(?=\S+$).{8,} 关于这个正则表达式,我只不清楚两件事: *用于什么,为什么没有它们这个正则表达式就不能工作 使用[\d]而不是\d有什么区别/好处,因为正则表达式在这两种情况下都可以正常工作 *匹配任何字符序列匹配任何字符(除换行符外,此处不相关),并且*匹配前面的零个或多个模式。这在lookaheads中用于搜索密码中任何位置的匹配项。如果没有

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

(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[^a-zA-Z\d])(?=\S+$).{8,}
关于这个正则表达式,我只不清楚两件事:

  • *
    用于什么,为什么没有它们这个正则表达式就不能工作

  • 使用
    [\d]
    而不是
    \d
    有什么区别/好处,因为正则表达式在这两种情况下都可以正常工作

  • *
    匹配任何字符序列
    匹配任何字符(除换行符外,此处不相关),并且
    *
    匹配前面的零个或多个模式。这在lookaheads中用于搜索密码中任何位置的匹配项。如果没有,则需要按特定顺序使用这些类型的字符:小写字母后跟大写字母后跟数字。使用
    *
    ,意味着密码必须至少包含其中一个,但它们可以位于密码中的任何位置

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


  • 请看本页右侧的一栏,它告诉您一切: