企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
以上的三个量词符,默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止。这被称为贪婪模式。 ~~~ 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"] ~~~