網站搜尋

如何在 JavaScript 中進行「原始」字串搜尋與取代,不使用正則表達式


我如何在 JavaScript 中執行正確的字串搜尋與取代,而完全不使用正則表達式?

我知道文件上說,如果 String.prototype.replace() 的第一個參數是字串,而不是正則表達式的話,它將會進行字面上的替換。但實際操作顯示,這並不完全正確:

"I am a string".replace('am', 'are')
--> "I are a string"

好

"I am a string".replace('am', 'ar$e')
--> "I ar$e a string"

仍然可以

"I am a string".replace('am', 'ar$$e')
--> "I ar$e a string"

不行!

第二個美元符號在哪裡?它是不是在尋找像 $1 這樣的東西,用來替換正則表達式中的匹配項……但那從未被使用過?

我感到非常困惑和沮喪,有什麼建議嗎?

答案#1

如果你使用替換回呼函式而不是字串常值,自動的正則表達式替換將不會執行:

"I am a string".replace('am', () => 'ar$$e')