Javascript JS Regex,用于未包含在<;a>;?

Javascript JS Regex,用于未包含在<;a>;?,javascript,html,regex,Javascript,Html,Regex,我使用下面的js在html中突出显示搜索字符串的内容,但问题是这也会影响url字符串 var a = new RegExp(keywords, "igm"); container.innerHTML = container.innerHTML.replace(a, "<span style='background:#FF0;'>" + keywords + "</span>"); var a=newregexp(关键字,“igm”); container.innerHT

我使用下面的js在html中突出显示搜索字符串的内容,但问题是这也会影响url字符串

var a = new RegExp(keywords, "igm");
container.innerHTML = container.innerHTML.replace(a, "<span style='background:#FF0;'>" + keywords + "</span>");
var a=newregexp(关键字,“igm”);
container.innerHTML=container.innerHTML.replace(a,“+关键字+”);
如果关键字在url中,则url将与
xxxx.com/product
重新关联,这是错误的


那么有没有办法过滤掉url中不包含的单词呢?不确定是否有可以执行此操作的RegExp。提前感谢。

这里有一段代码可以满足您的要求:

// prepare the replacement as a function
function do_replacement(node) {
  var a = new RegExp(keywords, "igm");
  node.innerHTML = node.innerHTML.replace(a,
    "<span style='background:#FF0;'>" + keywords + "</span>");
}

// back up the links
var link_backups = new Array();
var link_refs = new Array();
var container_links = container.getElementsByTagName("a");
for (var i = 0; i < container_links.length; i++) {
  var copy = container_links[i].cloneNode(true);
  // the link target (href) is not contained in the link's innerHTML
  // remove this line if you don't want to replace the link's TEXT
  do_replacement(copy);
  link_backups.push(copy);
  link_refs[i] = container_links[i];
}

do_replacement(container);

// restore the backed up links
// (this uses link_refs[] because container_links[] could have changed)
for (var i = 0; i < link_refs.length; i++) {
  container.replaceChild(link_backups[i], link_refs[i]);
}
//作为函数准备替换
功能do_替换(节点){
var a=新的RegExp(关键字,“igm”);
node.innerHTML=node.innerHTML.replace(a,
“+关键词+”);
}
//备份链接
var link_backups=新数组();
var link_refs=新数组();
var container_links=container.getElementsByTagName(“a”);
对于(var i=0;i

如果您的
关键字
与标记名匹配,则此操作(可能)将失败(
将杀死节点的所有HTML内容。

好吧,您不想将innerHTML替换为字符串,因为这也会破坏容器中元素上的当前EventListener。您需要在DOM节点上循环,并使用parentNode上的条件检查显式地在textNodes上执行替换操作。@Jack,i可能重复看起来你的链接是关于简单的替换而不是避免HTML代码。@JerryCai希望只对呈现的文本进行操作而不影响代码,例如
“fox”。safe_replace(/f/igm,“b”)
将变成
(或stubb?我不清楚这部分)。