我有一个字符串,可能是也可能不是有效的 HTML,但它应该包含一个 Title 标签。
我想用新内容替换标题的内容。
示例 1:
lorem yada yada <title>Foo</title> ipsum yada yada
应该变成:
lorem yada yada <title>Bar</title> ipsum yada yada
示例 2:
lorem yada yada <title attributeName="value">Foo</title> ipsum yada yada
应该变成:
lorem yada yada <title attributeName="value">Bar</title> ipsum yada yada
我不想用正则表达式解析 html - 只需替换标题标签...请不要发送给我 here ...
编辑:
在无数次的反对票和大量的光顾态度之后 -
我知道(正如在原始帖子中承认的那样)通常 Regex 不是处理 HTML 的方式。我对任何可以解决我的问题的解决方案持开放态度,但直到现在每个 JQuery/DOM 解决方案都不起作用。仅仅“正确”是不够的。
最佳答案
很难用正则表达式可靠地做这样的事情(阅读:“不会对所有情况都有效”),因此如果可能的话最好使用某种适当的解析器。
也就是说,这里有一个适用于您的示例的简单表达式:
var re = /(<title\b[^>]*>)[^<>]*(<\/title>)/i;
str = str.replace(re, "$1Bar$2");
一些它无法处理且无法正常工作的事情:评论、引述、CDATA 等。
关于javascript - 如何替换javascript中的特定标签内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100077/