我有一個字符串'abc.132131.001.3'
。我想用'~'
替換'.'
的每個出現次數。替換。與〜
我用
str.replace(/[.*?^${}()|[\]\\]/g, "\~$&");
但輸出這是
abc~.132131~.001~.3
我也試過
str.replace(/./g, "~");
,這將返回
'~~~~~~~~~~~~'
我有一個字符串'abc.132131.001.3'
。我想用'~'
替換'.'
的每個出現次數。替換。與〜
我用
str.replace(/[.*?^${}()|[\]\\]/g, "\~$&");
但輸出這是
abc~.132131~.001~.3
我也試過
str.replace(/./g, "~");
,這將返回
'~~~~~~~~~~~~'
看的第二個參數replace
,你有"\~$&"
。
反向引用$&
反向引用整個匹配的字符串。在這種情況下,.
是匹配的字符串。因此,您將替換.
與~
,然後匹配.
。
刪除$&
,你會沒事的。
我已經使用
str.replace(/[.*?^${}()|[\]\\]/g, "\~$&");
,但輸出爲abc~.132131~.001~.3
。
這正則表達式匹配的任何字符外[]
支架,不僅僅是句號,但在你的替換字符串$&
部分有任何文本的正則表達式匹配的特殊意義,這將是字符滿座.
。因此,您將每個.
更改爲~.
。你可以更新你的替換字符串到"~"
,你會得到你想要的輸出。
我也試過
str.replace(/./g, "~");
,這將返回'~~~~~~~~~~~~'
。
這是因爲在regular expression一個.
這不是一個「字符集」用方括號內(在您的其他嘗試)除換行符任何字符匹配,因此在字符串中的每個字符被替換。
要搜索你必須使用一個反斜槓逃脫它的正則表達式字面全站'.'
字符:
var str = 'abc.132131.001.3'
var result = str.replace(/\./g, '~')
console.log(result)
'/ [。] /'也匹配問題中的文字'.'。 –
@JoeFrambach - 確實如此。說實話,我沒有仔細閱讀第一次嘗試,因爲它在修復之前被格式化了。我可以補充一點。 – nnnnnn