我有一个字符串,,它可能是或可能不是有效的,但是它应该包含一个标题标记。
我想用新的内容代替标题的内容。
示例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 我不想用regex解析html -只是替换标题标签.请不要给我寄here..。
编辑:经过无数次的投票和大量的恩惠态度-
我知道(正如在最初的文章中所承认的),通常Regex不是处理HTML的方法。我对任何解决问题的解决方案都持开放态度,但到目前为止,每个JQuery / DOM解决方案都不起作用。“正确”是不够的。
发布于 2012-06-19 12:03:19
使用regex很难可靠地完成这样的事情(阅读:“不是所有情况都能工作”),因此,如果可能的话,最好使用某种适当的解析器。
尽管如此,这里有一个简单的表达式,适用于您的示例:
var re = /(<title\b[^>]*>)[^<>]*(<\/title>)/i;
str = str.replace(re, "$1Bar$2");有些事情不能处理,也不能正确地处理:注释、引号、CDATA等等。
发布于 2012-06-19 11:36:30
function replaceTitle( str, replacement ) {
var tmp = document.createElement("ihatechrome");
tmp.innerHTML = str;
tmp.getElementsByTagName("title")[0].innerHTML = replacement;
return tmp.innerHTML;
}
replaceTitle( "lorem yada yada <title>Foo</title> ipsum yada yada", "Bar" );
//"lorem yada yada <title>Bar</title> ipsum yada yada"出于某种原因,如果有带有img标记的src,google会发出请求。没有任何意义,但事情就是这样。
编辑:
这似乎适用于铬(不加载图像):
var doc = document.implementation.createHTMLDocument("");
doc.body.innerHTML = "<img src='/'>";
doc.body.innerHTML; //"<img src="/">"发布于 2012-06-19 23:17:07
请上帝不要试图用regex解析html (我知道你说过你没有解析它,但你是.)jQuery有一组非常好的原语来操作DOM中没有的html:
var htmlishString = "almost <title>HTML</title>";
var $fakeDiv = jQuery('<div />');
$fakeDiv.html(htmlishString).find('title').text('Bar');
var manipulatedString = $fakeDiv.html()http://jsfiddle.net/4kQkx/
https://stackoverflow.com/questions/11100077
复制相似问题