为什么。*和。+表现相同

时间:2019-07-03 13:56:49

标签: regex regex-lookarounds regex-group positive-lookahead

(?=.+[0-9])(?=.+[a-z])(?=.+[A-Z])(?=.+[!@#$%^&*.,?_+]).{8,}
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*.,?_+]).{8,}

为什么*和+的行为方式相同? 根据正则表达式文档:

+量词-在一次和无限次之间进行匹配,并尽可能地多次匹配,并根据需要返回

*量词-匹配零次至无限次,并尽可能多地匹配,并根据需要进行回馈(贪婪)

所以,就此而言

    每个组中至少有1个的
  1. 123345678aA#都应通过;

  2. 没有任何大写字母的
  3. 12345678a#,第二个正则表达式exp应该失败但可以通过。能否请您解释一下它为什么起作用?

我在这里https://regex101.com/尝试了两种模式

(?=.+[0-9])(?=.+[a-z])(?=.+[A-Z])(?=.+[!@#$%^&*.,?_+]).{8,}
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*.,?_+]).{8,}

实际:两种情况都通过了两种正则表达式模式 预期:带有*的正则表达式在第二种情况下会失败

0 个答案:

没有答案