我有一个动态来自另一个文档的字符串,如下所示;
T
我使用此字符串如下;
"<!DOCTYPE html>
<html dir="ltr"><head><title>Preview</title></head>
<body>
<p>test</p>
<p><img alt="" height="299" src="http://172.0.0.1/Administration/YDImages/cap.JPG" width="696"></p>
</body>
</html>"
我发现var html = stringAbove;
var reg = html.match(/<body[^>]*>(.*)<\/body>/);
var newDocument = "<p>My new Texts and styles</p>"; //replace inside body with my new code
var newer = html.replace(reg[1],newDocument);
doc.write(newer);
返回html.match
如果html变量中的字符串如上所述,同时调试以了解如何使这个正则表达式适用于开发人员工具,我&#39 ; ve将字符串的双引号的起始和结尾更改为单引号,因此它起作用。然后我将所有双引号更改为单引号并尝试正则表达式函数,但它不起作用。请帮助我正确使用这个正则表达式。
答案 0 :(得分:0)
您可以尝试这样的事情:
/<body>(.*?)(?=<\/body>)/
这将从<body>
开始匹配,直到后跟</body>
的字符。
此外,由于您正在接收HTMLString,因此您将不会有多个body
,因此使用match[0]
var s = '<!DOCTYPE html><html dir="ltr"><head><title>Preview</title></head><body><p>test</p><p><img alt="" height="299" src="http://172.0.0.1/Administration/YDImages/cap.JPG" width="696"></p></body></html>';
var regex = /<body>(.*?)(?=<\/body>)/;
var match = s.match(regex)
console.log(match)
var html = match[0].replace("<body>", "")
document.querySelector('.content').innerHTML = html
img{
border: 1px solid gray;
}
<div class="content"></div>