[英]RegEx question - HTML tag content
我想用JavaScript用<I <body>
替换<body>
所有“ i”字符。 (例如: <div id="123">Hi! it!</div>
应该更改为<div id="123">HI! It!</div>
)。 我知道我必须使用正则表达式。 但我不知道该写些什么。 你能帮助我吗? 谢谢 ..
我刚刚回答了一个可能对您有所帮助的类似问题: JQuery / Javascript-在DOM中搜索文本并插入HTML
对于这种特殊情况,您可以简化。
UPDATE
我添加了一个filter
参数,以允许您过滤掉特定节点的后代。 该函数应采用单个DOM节点参数并返回一个布尔值: true
替换节点及其后代中的文本, false
忽略节点及其后代。
function replaceText(node, regex, replacementText, filter) {
if (node.nodeType == 3) {
node.data = node.data.replace(regex, replacementText);
} else if (!filter || filter(node)) {
var child = node.firstChild;
while (child) {
replaceText(child, regex, replacementText, filter);
child = child.nextSibling;
}
}
}
function scriptAndStyleFilter(node) {
return node.nodeType != 1 || !/SCRIPT|STYLE/i.test(node.nodeName);
}
replaceText(document.body, /i/g, "I", scriptAndStyleFilter);
这是使用CSS,jQuery和Highlight插件的替代方法:
CSS:
.highlight {text-transform:uppercase;}
JavaScript的:
$('body').highlight('i');
工作示例: http : //jsbin.com/okavo4
这是一个简单的示例,但是如果您需要更复杂的内容,则可以使用源代码来获取所需的内容。 在您的身体来源上使用正则表达式是错误的,尤其是在浏览器的上下文中,在该浏览器中您已经具有解析的DOM结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.