繁体   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