我正在尝试用x替换所有“p”。
var re = new RegExp("p","g");
document.body.innerHTML=document.body.innerHTML.replace(re, "x");
但是这段代码行用x替换所有“p”字母和段落标记。
在:
p and <p>
后:
x and <x>
如何只替换p个字母(不是标签)?
答案 0 :(得分:2)
在regex
中尝试完全匹配。
var re = new RegExp(/^p$/,"g")
答案 1 :(得分:1)
试试这个:
var re = new RegExp(/(?<!<)p(?!>)/,"g");
谨防</p>
另外,如果你想考虑所有<p class...
标签,你应该使用更复杂的正则表达式。
答案 2 :(得分:1)
根据this question的答案,你可以使用这样的代码获取文档中的所有文本节点,然后迭代它们并更改它们的值:
window.onload = function() {
var walker = document.createTreeWalker(
document.body,
NodeFilter.SHOW_TEXT,
null,
false
);
var node;
var textNodes = [];
while(node = walker.nextNode()) {
textNodes.push(node);
}
var regex = new RegExp("p","g");
for (var i = 0; i < textNodes.length; i++) {
var node = textNodes[i];
node.nodeValue = node.nodeValue.replace(regex, "x");
}
};
从我所看到的,它得到了所有现代浏览器甚至IE9的支持。