(?=.+[0-9])(?=.+[a-z])(?=.+[A-Z])(?=.+[!@#$%^&*.,?_+]).{8,}
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*.,?_+]).{8,}
为什么*和+的行为方式相同? 根据正则表达式文档:
+量词-在一次和无限次之间进行匹配,并尽可能地多次匹配,并根据需要返回
*量词-匹配零次至无限次,并尽可能多地匹配,并根据需要进行回馈(贪婪)
所以,就此而言
123345678aA#都应通过;
12345678a#,第二个正则表达式exp应该失败但可以通过。能否请您解释一下它为什么起作用?
我在这里https://regex101.com/尝试了两种模式
(?=.+[0-9])(?=.+[a-z])(?=.+[A-Z])(?=.+[!@#$%^&*.,?_+]).{8,}
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*.,?_+]).{8,}
实际:两种情况都通过了两种正则表达式模式 预期:带有*的正则表达式在第二种情况下会失败