我正在寻找与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='...>
和内容未更改的正则表达式
亚当
答案 0 :(得分:0)
使用前瞻以确保目标不在标记内(即下一个尖括号为<
):
re = new RegExp("\\b(" + words[i] + ")\\b(?=[^>]*<)", "ig");