javascript - 如何替换javascript中的特定标签内容

标签 javascript regex

我有一个字符串,可能是也可能不是有效的 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/

相关文章:

c - 由于正则表达式中的 malloc(0) 导致程序中止

javascript - 根据字段分割对象

javascript - 根据滚动内容背景颜色更改 Logo img

javascript - 在 Elixir 中循环 Stylus 命令

javascript - 为什么匿名函数在其语句中比在调用中具有更多参数

arrays - 如何使用 Perl 剪切数组中字符串的第二列

php - Preg_match 差异?

javascript - export default something() 意思

regex - 需要正则表达式来检查至少 3 个大写字母、3 个小写字母、3 个数字和 3 个特殊字符

mysql - 在 MySQL 中查找部分重复项(最后 6 个字符相同的键)