使用JS搜索和替换:不包含html代码的RegExp

时间:2013-10-31 12:46:06

标签: javascript html regex

我正在寻找与html正文中的字符串匹配的正则表达式,但不会影响标题标记中出现的字符串,例如我有:

words = new Array("Android","iOS");
change = new Array ("http://www.google.com","http://www.apple.com");
obj = document.getElementsByTagName("body")[0]; 
// search and replace
for (i in words) {
    re = new RegExp("\\b("+words[i]+")\\b", "ig");
    str = obj.innerHTML.replace(re,'<a href="'+change[i]+'">$1</a>');
    document.getElementsByTagName("body")[0].innerHTML = str;
}
  }

所以我有一个单词列表,JS正在从HTML Body中替换这些单词(例如替换iOS' by <a href='http://www.apple.com'>iOS</a>)。但是:它也取代了像“<title = 'iOS'> ->这样的HTML代码<title='a href='http://www.apple.com'>iOS</a>'。如何更改<title='...>和内容未更改的正则表达式

亚当

1 个答案:

答案 0 :(得分:0)

使用前瞻以确保目标不在标记内(即下一个尖括号为<):

re = new RegExp("\\b(" + words[i] + ")\\b(?=[^>]*<)", "ig");