Regex 如何理解特定的正则表达式模式?

Regex 如何理解特定的正则表达式模式?,regex,Regex,我在网上找到了这个正则表达式,但我很难理解它。这是: (?=^.{6,10}$)(?=..*\d)(?=.[a-z])(?=.[a-z])(?=.[!@.$%^&;(?)/,])(?!.*\s)。*$ 说明如下: 此正则表达式匹配可用于验证强密码。它需要至少1个小写字母、1个大写字母、1个数字、1个特殊字符,长度应在6-10个字符之间。字符序列不重要。此表达式遵循Microsoft为强密码指定的上述4个规范d 我知道有以下几组。我读到,?=表示向前看 (?=^.{6,10}$)这是否意

我在网上找到了这个正则表达式,但我很难理解它。这是:

(?=^.{6,10}$)(?=..*\d)(?=.[a-z])(?=.[a-z])(?=.[!@.$%^&;(?)/,])(?!.*\s)。*$

说明如下:

此正则表达式匹配可用于验证强密码。它需要至少1个小写字母、1个大写字母、1个数字、1个特殊字符,长度应在6-10个字符之间。字符序列不重要。此表达式遵循Microsoft为强密码指定的上述4个规范d

我知道有以下几组。我读到,
?=
表示向前看

  • (?=^.{6,10}$)
    这是否意味着应该有6-10个字符
  • (?=.*\d)
    这是否意味着向前看应该有0个或多个字符后跟一个数字(因此至少有一个数字)?。这是否可以写成
    (?=\d+
    表示应该至少有一个数字
  • (?=.[a-z])
    模式以匹配
    a-z
    。同样,这是否可以写成
    (?=[a-z]+)
  • (?=.[A-Z])
    模式以匹配
    A-Z
    。同样,这是否可以写成
    (?=[A-Z]+)
  • (?=.[!@$%^&;*(?)
    这里也不需要
    *
  • (?!*\s)。*$
    -这是什么意思

    • 关于第一组,您是正确的。因为它以
      ^
      $
      锚定在开头和结尾,所以它必须匹配整个输入。因此它要求有6-10个字符

      接下来的四个lookahead在开始时需要
      *
      ,以便匹配输入中任何位置所需的字符类型。如果您刚刚编写
      (?=\d+)
      它必须匹配输入中当前位置的数字,这是开始。通过在每个数字前面加上
      *
      ,它允许不同类型(数字、小写、大写、标点符号)按任何顺序排列。您不需要在其后加
      +
      ,因为匹配一次就足够了

      (?!.*\s)
      是一个负前瞻。
      \s
      匹配空白,因此这意味着字符串不能包含任何空格


      最后,
      *$
      只匹配整个输入。这只是需要在所有的lookaheads之后有一些东西。

      您可以使用像regex101这样的实用程序,它在一定程度上为您提供了正则表达式的可视化表示和侧栏中的文本解释:请注意,
      &
      "e
      都应该是一个字符(分别是
      &
      亚伦-对不起,我不明白。我想你的意思是
      (?=^.{6,10}$)(?=.\d)(?=.[a-z])(?=.[a-z])(?=.[a-z])(?=.[![![a-z])(?=.[![!]?