繁体   English   中英

正则表达式问题-HTML标签内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM