在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ Javascript 正則表達式惰性模式的一個問題?

Javascript 正則表達式惰性模式的一個問題?

正則表達式惰性模式,表示如果表達式能匹配成功前提下,會盡可能的少匹配字符。
根據字面意思理解,看我如下代碼

var pattern=/a(\w*?)/;  
var str='a123a';  
console.log(str.replace(pattern,'$1'));

我預期輸出的是 '1',因為惰性模式,匹配一個字符就可以使之匹配成功
可實際輸出的是 '123a',與貪婪模式輸出一摸一樣

這是為什么?

回答
編輯回答
檸檬藍

$1匹配的是第一個() 也就是分組中的匹配內容

w表明匹配所有字符串 后面的表示出現0或者任意次 ?比如do 可以匹配do或者doo 既然a后面有值那么就全匹配上了

2017年10月12日 22:02
編輯回答
不二心

*表示匹配0到多次,所以最少匹配0個字符,因為是惰性匹配,所以匹配一個空字符串,也就是/a(\w*?)//a/是等價的;
$1表示第一個分組的內容,所以$1恒等于空字符串;
因此,str.replace(pattern, '$1')等價于str.replace(/a/, ''),也就是把字符串中的第一個a替換成空字符串;注意/a/并不是全局匹配,所以只替換了第一個a;如果想替換所有的a,需要把pattern設置成全局匹配pattern = /a(\w*?)/g;

2017年9月9日 03:46