在下面代碼里,我想把"p"后面的數(shù)字補(bǔ)全到 3 位,但是我發(fā)現(xiàn)不管 p 后面是多少位,總是會(huì)在前面補(bǔ)齊一個(gè) 0。var a='18917304_p1234';
a.replace(/(\d.*p)(\d.*)/,'$1'+('$2'.padStart(3, '0')));// "18917304_p01234"經(jīng)過(guò)我的胡亂分析,可能是因?yàn)?nbsp;padStart 并沒(méi)有獲取到 $2 的值,而是把 $2 當(dāng)作了普通字符串。 $2 這兩個(gè)字長(zhǎng)度是 2,所以 padStart 總是會(huì)補(bǔ)齊一個(gè) 0。后來(lái)?yè)Q了種寫(xiě)法解決了,但是如果不改寫(xiě),有更直接的辦法處理這種情況嗎?a.replace(/(\d.*p)(\d.*)/,function (...str) { return str[1]+str[2].padStart(3, '0');
});
如何讓 padStart 正確處理正則的分組標(biāo)志如 $1 ?
溫溫醬
2019-03-02 20:19:18