-2

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

有人可以简要解释一下这些限定词。

我从 http://www.mkyong.com/regular-expressions/how-to-validate-password-with-regular-expression/得到了这个模式

点是什么意思

当必须至少出现一次时,为什么不使用 + 限定符

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

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

4

2 回答 2

0

好的,让我们把它分解一下:首先,' .' =任何东西

(

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

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

(?=.*[A-Z])--- 'look-ahead' 再次 - 这断言在字符串的某处有一个 [AZ](大写字母)

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

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

)

希望能帮助到你!如果还有什么不清楚的,请直说。

于 2013-04-12T23:19:47.147 回答
0

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

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

于 2013-04-12T23:24:03.843 回答