我正在尝试用 x 替换所有“p”。
var re = new RegExp("p","g");
document.body.innerHTML=document.body.innerHTML.replace(re, "x");
但是此代码行将所有“p”字母和段落标记替换为 x。
前:
p and <p>
后:
x and <x>
我怎样才能只替换 p 字母(不是标签)?
我正在尝试用 x 替换所有“p”。
var re = new RegExp("p","g");
document.body.innerHTML=document.body.innerHTML.replace(re, "x");
但是此代码行将所有“p”字母和段落标记替换为 x。
前:
p and <p>
后:
x and <x>
我怎样才能只替换 p 字母(不是标签)?
尝试精确匹配。regex
var re = new RegExp(/^p$/,"g")
尝试这个:
var re = new RegExp(/(?<!<)p(?!>)/,"g");
提防</p>
另外,如果你想考虑所有<p class...
标签,你应该使用更复杂的正则表达式。
基于这个问题的好答案,您可以使用这样的代码获取文档中的所有文本节点,然后遍历它们并更改它们的值:
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 都支持它。