了解在純JavaScript中替換字符串的所有匹配項的正確方法,從正則表達式到其他方法。
使用正則表達式
這個簡單的正則表達式可以完成任務:
String.replace(/<TERM>/g, '')
這將執行區分大小寫的替換。
以下是一個示例,我將字符串phrase
中單詞’dog’的所有匹配項替換為空字符串:
const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.replace(/dog/g, '')
stripped //"I love my ! Dogs are great"
要執行不區分大小寫的替換,請在正則表達式中使用i
選項:
String.replace(/<TERM>/gi, '')
示例:
const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.replace(/dog/gi, '')
stripped //"I love my ! s are great"
請記住,如果字符串包含一些特殊字符,它將無法正確處理正則表達式,因此建議使用此函數將字符串進行轉義(從MDN中取得):
const escapeRegExp = (string) => {
return string.replace(/[.\*+?^${}()|[\]\\]/g, '\\$&')
}
使用split和join
另一種解決方案,儘管比正則表達式慢,是使用兩個JavaScript函數。
第一個是split()
,它會在找到一個模式(區分大小寫)時截斷字符串,並返回一個帶有標記的數組:
const phrase = 'I love my dog! Dogs are great'
const tokens = phrase.split('dog')
tokens //["I love my ", "! Dogs are great"]
然後,將這些標記連接成一個新的字符串,這次不使用任何分隔符:
const stripped = tokens.join('') //"I love my ! Dogs are great"
總結:
const phrase = 'I love my dog! Dogs are great'
const stripped = phrase.split('dog').join('')