1 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
您當(dāng)前的模式與空白(?<=const\s)(.*)(?=;)之間的任何零個(gè)或多個(gè)字符匹配,直到同一行中最右邊的出現(xiàn)為止。您想要做的是跳過(guò)字符串之間的部分,這是使用正則表達(dá)式不可能實(shí)現(xiàn)的。在這些情況下,您應(yīng)該始終考慮解決方法。也就是說(shuō),您可以在模式中使用捕獲組進(jìn)行替換,并在替換中使用反向引用(如果您需要獲得單個(gè)匹配項(xiàng)),或者完全更改整個(gè)邏輯(當(dāng)您需要多個(gè)匹配項(xiàng)時(shí),就像這里一樣)。const;
在這種情況下,您可以提取當(dāng)前匹配的所有字符串,確保匹配行上沒(méi)有您不希望出現(xiàn)的單詞,然后將大括號(hào)之間的所有字符串替換為該字符串(從所需的輸出中推導(dǎo)出來(lái){ user }) )。
然后你可以使用類似的東西
const text = "const { user } = props;\nconst { task } = state;\nconst { words } = response;\nconst { plays } = result;"
console.log(
text.match(/const\s(?!.*\b(?:props|state)\b).*;/g).map(x => x.replace(/{[^{}]*}/, '{ user }'))
)
輸出:
[
"const { user } = response;",
"const { user } = result;"
]
添加回答
舉報(bào)