我正在解析一些HTML,我需要在body标签中获取所有html。我的目标字符串将始终如下所示:
<body><div><img src="" />text etc</div></body>
但是,我只需要:
<div><img src="" />text etc</div>
我的目标字符串将始终以这些body标签开头和结尾。但是,有人反复警告不要使用正则表达式解析HTML,但我目前没有任何可行的解决方案,除了Regex。
问题:在这种情况下是否有任何安全的正则表达式?或者我应该忘记它?
答案 0 :(得分:3)
你没有向我们展示你的正则表达式是什么,但它不如使用DOM解析那么安全,如果它简单如下:
<body>(.*?)</body>
...因为</body>
可能包含在属性字符串或注释中。如果你愿意冒这个风险,那你就没事了。没有理由你不应该使用DOM解析而只是获取正文的文本,除非它可能效率较低。
您也可以跳过正则表达式,只需查找<body>
和</body>
的字符串索引,并获取它们之间的子字符串。那应该更快。
顺便说一句,这不是解析 HTML;你只是从HTML中提取
答案 1 :(得分:0)
在这种情况下使用RegEx很好。 话虽如此,有更简单的方法来获取body标签的innerHTML。
alert(document.body.innerHTML);
应该给你完全没有RegEx ... 或者如果你正在使用jQuery
$(body).html();