簡體   English   中英

如何使用Javascript RegExp匹配和替換包含子字符串的整個單詞

[英]How to match and replace entire word that contains substring using Javascript RegExp

我想使用Javascript匹配並替換包含子字符串的整個單詞。

到目前為止,這是我的代碼:

var final = ""
var n, a = [], walk = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
const searchWordPattern = new RegExp(searchWord, 'i');

while(n = walk.nextNode()) {
  a.push(n);
  n.nodeValue = n.nodeValue.replace(searchWordPattern, "--");
  final = final.concat(n.nodeValue);
}

這部分起作用。 它找到我要搜索的單詞並將其刪除。 但是,如果以任何方式對搜索詞進行共軛,都會被遺忘。 我想讓正則表達式匹配找到子字符串的整個單詞。 並將其全部刪除。 我需要更改什么?

編輯

我嘗試使用以下答案,但對於\\ w或\\ S變體,似乎沒有做任何不同的事情。 這是我正在使用的代碼:

var final = ""
var n, a = [], walk = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
const searchWordPattern = new RegExp('\S*' + searchWord + '\S*', 'i');

while(n = walk.nextNode()) {
  a.push(n);
  n.nodeValue = n.nodeValue.replace(searchWordPattern, "--");
  final = final.concat(n.nodeValue);
}

結果是將searchWord替換為“-”字符串,但是如果將其綴合,則不包含其他字符。 因此,如果“ look”是searchWord,則正則表達式的結果為“ --ing”。 我希望它只是“-”。

您需要調整正則表達式,以便不僅僅是搜索單詞:

new RegExp(searchWord, 'i');

您還可以搜索任何周圍的“單詞”字符:

new RegExp('\\w*' + searchWord + '\\w*', 'i');

或所有非空白字符:

new RegExp('\\S*' + searchWord + '\\S*', 'i');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM