🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
以上的三个量词符,默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止。这被称为贪婪模式。 ~~~ var s = 'aaa'; s.match(/a+/) // ["aaa"] ~~~ 上面代码中,模式是`/a+/`,表示匹配1个`a`或多个`a`,那么到底会匹配几个`a`呢?因为默认是贪婪模式,会一直匹配到字符`a`不出现为止,所以匹配结果是3个`a`。 如果想将贪婪模式改为非贪婪模式,可以在量词符后面加一个问号。 ~~~ var s = 'aaa'; s.match(/a+?/) // ["a"] ~~~ 上面代码中,模式结尾添加了一个问号`/a+?/`,这时就改为非贪婪模式,一旦条件满足,就不再往下匹配。 除了非贪婪模式的加号,还有非贪婪模式的星号(`*`)和非贪婪模式的问号(`?`)。 * `+?`:表示某个模式出现1次或多次,匹配时采用非贪婪模式。 * `*?`:表示某个模式出现0次或多次,匹配时采用非贪婪模式。 * `??`:表格某个模式出现0次或1次,匹配时采用非贪婪模式。 ~~~ 'abb'.match(/ab*b/) // ["abb"] 'abb'.match(/ab*?b/) // ["ab"] 'abb'.match(/ab?b/) // ["abb"] 'abb'.match(/ab??b/) // ["ab"] ~~~