非贪婪模式,需要在量词后面加问号
搜索
复制
非贪婪模式,需要在量词后面加“?”
非贪婪模式,须在量词后面加“?”
非贪婪模式,须在量词后面加‘?’
贪婪模式(正常情况会尽可能多的匹配,图例会按6来匹配)
非贪婪模式 尽可能少的匹配,一旦匹配成功不再继续尝试.
做法,在量词后加?即可
正则表达式在匹配的时候会尽可能多的匹配:贪婪模式 '123456789'.replace(/\d{3,6}/g,'X')
让正则表达式尽可能少的匹配,也就是说一旦匹配不再继续尝试:非贪婪模式
做法:在量词后加上问号?
'123456789'.replace(/\d{3,6}?/g,'X')
如何开启 正则表达式的 非贪婪模式 在量词后面加上 问号
正在表达式的 贪婪模式 ,就是 尽可能多的匹配
这里有一个match的经典场景
关闭贪婪模式:
在量词后面加上问号'?' 就可以 关闭贪婪模式
非贪婪模式 ?
`123456789`.match(/\d{3,7}?/g); // (3) ["123", "456", "789"] `123456789`.replace(/\d{3,7}?/g, `xgqfrms?`); // "xgqfrms?xgqfrms?xgqfrms?"
贪婪模式
'12345678'.replace(/\d{3,6}/g,'X') 结果为X78
按最多次(这里是6)匹配,即123456替换成X
非贪婪模式
'12345678'.replace(/\d{3,6}?/g,'X') 结果为XX78
按最少次匹配(这里是3次),即[123],[456]都被替换成X 结果为XX
正则一般匹配是以贪婪模式(尽可能多的匹配)
非贪婪模式如图
使用问号开启非贪婪模式
尽可能多的匹配,直到匹配失败(贪心思想)
非贪婪模式
贪婪模式:尽可能多地匹配,直到匹配失败
即匹配过程中有多个条件符合的话,会选择最多的那一种
非贪婪模式:让正则表达式尽可能少的匹配,一旦成功匹配则不再继续尝试,在量词后面加上?即可
'12345678'.replace(/\d{3,6}/g,'X')
"X78"贪婪模式:尽可能多的匹配
'12345678'.replace(/\d{3,6}?/g,'X')
"XX78"非贪婪模式:尽可能少的匹配
非贪婪模式
贪婪模式:正则表达式将会尽可能多的匹配直到匹配失败
/d{3,5}? 范围后加?表示非贪婪模式
默认贪婪模式(尽可能多的匹配)
12345678.replace(/\d{3,6}/g, 'X') ==> X78
非贪婪模式 +?
12345678.replace(/\d{3,6}?/g, 'X') ==> XX78