可以安全地使用Regex吗? (HTML)

时间:2013-05-18 23:48:24

标签: iphone html ios regex ios6

我正在解析一些HTML,我需要在body标签中获取所有html。我的目标字符串将始终如下所示:

<body><div><img src="" />text etc</div></body>

但是,我只需要:

<div><img src="" />text etc</div>

我的目标字符串将始终以这些body标签开头和结尾。但是,有人反复警告不要使用正则表达式解析HTML,但我目前没有任何可行的解决方案,除了Regex。

  

问题:在这种情况下是否有任何安全的正则表达式?或者我应该忘记它?

2 个答案:

答案 0 :(得分:3)

你没有向我们展示你的正则表达式是什么,但它不如使用DOM解析那么安全,如果它简单如下:

<body>(.*?)</body>

...因为</body>可能包含在属性字符串或注释中。如果你愿意冒这个风险,那你就没事了。没有理由你不应该使用DOM解析而只是获取正文的文本,除非它可能效率较低。

您也可以跳过正则表达式,只需查找<body></body>的字符串索引,并获取它们之间的子字符串。那应该更快。

顺便说一句,这不是解析 HTML;你只是从HTML中提取

答案 1 :(得分:0)

在这种情况下使用RegEx很好。 话虽如此,有更简单的方法来获取body标签的innerHTML。

 alert(document.body.innerHTML); 

应该给你完全没有RegEx ... 或者如果你正在使用jQuery

$(body).html();