获取字符串中的内容

我要执行以下操作。

$("a").click(function (event) {

event.preventDefault();

$.get($(this).attr("href"), function(data) {

$("html").html(data);

});

});

我想要所有超链接的行为进行ajax调用并检索html。

不幸的是,您不能简单地用ajax响应中收到的html替换当前的html。

如何仅获取<body> </body>ajax响应的标记中的内容,以便 替换现有html中正文的内容。

编辑:<body>开始标记并不总是这样<body>,有时可能会有一个类,例如

<body class="class1 class2">

回答:

如果我对您的理解正确,请使用正则表达式在body标签之间获取内容。

$.get($(this).attr("href"), function(data) {

var body=data.replace(/^.*?<body>(.*?)<\/body>.*?$/s,"$1");

$("body").html(body);

});

编辑

根据您在下面的评论,这是一个更新,以匹配任何body标签,无论其属性如何:

$.get($(this).attr("href"), function(data) {

var body=data.replace(/^.*?<body[^>]*>(.*?)<\/body>.*?$/i,"$1");

$("body").html(body);

});

正则表达式为:

^               match starting at beginning of string

.*? ignore zero or more characters (non-greedy)

<body[^>]*> match literal '<body'

followed by zero or more chars other than '>'

followed by literal '>'

( start capture

.*? zero or more characters (non-greedy)

) end capture

<\/body> match literal '</body>'

.*? ignore zero or more characters (non-greedy)

$ to end of string

添加“ i”开关以匹配大写和小写字母。

并且请忽略我对’s’开关的评论,在JavaScript中,默认情况下所有RegExp都已经是单行,要匹配多行模式,请添加’m’。(该死的Perl,在我写JavaScript时干扰了我!:-)

以上是 获取字符串中的内容 的全部内容, 来源链接: utcz.com/qa/410847.html

回到顶部