/

在JavaScript中替換字符串的所有匹配項

在JavaScript中替換字符串的所有匹配項

了解在純JavaScript中替換字符串的所有匹配項的正確方法,從正則表達式到其他方法。

使用正則表達式

這個簡單的正則表達式可以完成任務:

1
String.replace(/<TERM>/g, '')

這將執行區分大小寫的替換。

以下是一個示例,我將字符串phrase中單詞’dog’的所有匹配項替換為空字符串:

1
2
3
4
const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.replace(/dog/g, '')

stripped //"I love my ! Dogs are great"

要執行不區分大小寫的替換,請在正則表達式中使用i選項:

1
String.replace(/<TERM>/gi, '')

示例:

1
2
3
4
const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.replace(/dog/gi, '')

stripped //"I love my ! s are great"

請記住,如果字符串包含一些特殊字符,它將無法正確處理正則表達式,因此建議使用此函數將字符串進行轉義(從MDN中取得):

1
2
3
const escapeRegExp = (string) => {
return string.replace(/[.\*+?^${}()|[\]\\]/g, '\\$&')
}

使用split和join

另一種解決方案,儘管比正則表達式慢,是使用兩個JavaScript函數。

第一個是split(),它會在找到一個模式(區分大小寫)時截斷字符串,並返回一個帶有標記的數組:

1
2
3
4
const phrase = 'I love my dog! Dogs are great'
const tokens = phrase.split('dog')

tokens //["I love my ", "! Dogs are great"]

然後,將這些標記連接成一個新的字符串,這次不使用任何分隔符:

1
const stripped = tokens.join('') //"I love my ! Dogs are great"

總結:

1
2
const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.split('dog').join('')

tags: [“javascipt”, “regex”, “string manipulation”]