【问题标题】:Pattern Matching Qualifiers [closed]模式匹配限定符[关闭]
【发布时间】:2013-04-12 23:14:08
【问题描述】:

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

谁能简要解释一下这些限定词。

我从 http://www.mkyong.com/regular-expressions/how-to-validate-password-with-regular-expression/

点是什么意思

为什么 + 限定符必须至少出现一次却没有使用

还有什么限定词应该使用零次或多次。

我是java中这种模式匹配的新手,有点难以掌握

【问题讨论】:

标签: java regex pattern-matching


【解决方案1】:

好的,让我们稍微分解一下: 第一, '.' = 任何东西

(

(?=.*\d) --- '?=' 是正则表达式 'look-ahead' - 这表明字符串中某处有一个 \d(数字)

(?=.*[a-z]) --- 'look-ahead' 再次断言字符串中某处有一个 [a-z](小写字母)

(?=.*[A-Z]) --- 'look-ahead' 再次断言字符串中某处存在 [A-Z](大写字母)

(?=.*[@#$%]) ---- 又一个'look-ahead' - 断言至少有一个字符类被定义为@,#,$,%

.{6,20} - 断言字符串必须包含 6 到 20 个“任何东西”符号,即“。”

)

希望对您有所帮助!如果还有什么不清楚的,请直接说出来。

【讨论】:

  • 非常感谢,我明白了
  • 点是almost anything...
  • 啊,是的,除了换行符之外,点确实是任何东西 - 除非在您使用的语言中有一个标志或修饰符使其匹配 anything... 无论如何,如果答案对你来说足够了,请继续打勾:)
  • @d'alar'cop:哦,不。它不会只是在 Java 和 JavaScript 中排除换行符:stackoverflow.com/questions/14648743/…。并且最大/最小长度仅适用于 String.matches()Matcher.matches()
  • @nhahtdh 啊,有趣。谢了哥们。我会记住这一点
【解决方案2】:

您不需要+ 量词,因为您只是向前看才能看到所有内容中的“至少一个”。 (一个数字、一个小写字母、一个大写字母、一个符号和至少六到二十个总字符)

. 表示“任何东西”。匹配任何字符,除了换行符(通常)。

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多