我的字符串:
<h2>headline</h2>
我想用另一个字符串替换第一个标题str.replace(/<h2>(.*)<\/h2>/, 'another String')
。
到目前为止,我有<h2>headline</h2><p>content</p><h2>another headline</h2>
但由于第二个</h2>
而取代<h2>(.*)<\/h2>
。
有没有办法只替换第一个str.replace(/<h2>(.*[except <\/h2>])<\/h2>/, 'another String')
?
类似于:var Firebase = require('firebase');
var ref = new Firebase("<FIREBASE-APP>");
var connectedRef = ref.child(".info/connected");
connectedRef.on("value", function(snap) {
if (snap.val() === true) {
console.log("connected");
} else {
console.log("not connected");
}
});
答案 0 :(得分:1)
您可以使用:first
伪选择器更改第一个h2
的内容,如下所示。
$('h2:first').text('another string')
如果您想要替换h2
本身,请使用replaceWith()
方法,如下所示。
$('h2:first').replaceWith('another string')
答案 1 :(得分:0)
使用以下正则表达式:
str.replace(/<h2>(.*?)<\/h2>/, 'another String')
量词:*?在零和无限次之间,尽可能少,
答案 2 :(得分:0)
jquery解决方案将如下:
e = $j("<div>" + string );
e.find("h2").first().html("any html you want");
e.html()
JS解决方案就像
d = document.createElement ("div");
d.innerHTML = string;
d.querySelector("h2").innerHTML = "any html you want";
d.innerHTML
或简单的字符串操作
var x = string ;
x.substr(0,x.indexOf("<h2>")+4) + "you string " + x.substr(x.indexOf("</h2>")+5)
答案 3 :(得分:0)
这样的事情怎么样?没有jQuery,只是本机JavaScript。
var s = '<h2>headline</h2><p>content</p><h2>another headline</h2><p>another content</p>'
// Create a holder element and let the document parse our HTML
var el = document.createElement('div')
el.innerHTML = s
// Find and replace what we want
el.querySelectorAll('h2')[0].innerHTML = 'REPLACED'
// Just to output in our snippet
document.querySelectorAll('#init')[0].innerHTML = s
document.querySelectorAll('#res')[0].innerHTML = el.innerHTML
div{border: 1px solid red}
<h3>New HTML</h3>
<div id="res"></div>
<hr>
<h3>Original HTML</h3>
<div id="init"></div>
对HTML等复杂结构使用正则表达式通常是个坏主意。你真的想要解析它们。这个答案背后的想法是利用浏览器(它知道如何解析HTML)来找到你想要的元素并使用它。