问答详情
源自:2-7 JS正则贪婪模式与非贪婪模式

贪婪模式跟非贪婪模式

‘12345678’.replace(/\d{3,6}/g,'x')结果:X78

‘12345678’.replace(/\d{3,6}?/g,'x')结果:XX78

x的数量不一样,我想请问下是不是代表着匹配的次数

提问者:浅学辄止 2016-09-14 10:53

个回答

  • psmaster
    2016-10-12 22:25:45

    第一次贪婪模式,尽可能多的匹配,匹配了6个数字,所以只剩下78两个,不符合至少3次的要求,所以不再进行匹配,第二次取消了贪婪模式,匹配了3个数字就停止了,但又是全文匹配,会接着继续匹配了3个数字,最后省下78也不符号至少3次的要求,所以变成xx78。

    要点,1全文匹配的话,会一直进行匹配,直到不符合要求

    2.贪婪模式不是只去匹配最大的值而是尽可能的匹配所有符合要求的字符


  • 菜鸟佳佳
    2016-09-14 14:24:22

    是的,第一次贪婪模式,尽可能多的匹配,匹配了6个数字,所以只剩下78,第二次取消了贪婪模式,匹配了3个数字就停止了,但又是全文匹配,会接着继续匹配了3个数字,所以变成xx78