【发布时间】:2012-06-08 17:24:51
【问题描述】:
我有以下 javascript 代码:
<script type="text/javascript"> //javascript starts
var patt=/[<](\S+).*>(.*)<\/\1>/;
var str='<a id="test">hi</a> <p></p>';
alert(str.match(patt));
alert(patt.exec(str));
</script>
应该在一个 html 文档中找到所有标签。所以理想情况下它应该返回<a id="test">hi</a>, <p></p>。
但它目前返回<a id="test">hi</a>, a ,hi。
为什么会这样?
还有一个问题,str.match(patt)和patt.exec(str)有什么区别,哪个更好用?
【问题讨论】:
-
为什么不使用 dom 解析器而不是正则表达式?
-
嗯,jquery 是一个非常好的 dom 解析器,除了其他的东西
-
但是我这里需要的是 html 解析器而不是 dom 解析器。我正在从文件中读取 html 输入
-
dom 代表“文档对象模型”,它是浏览器对 xml/html 字符串代码的内部表示。 jQuery 也可以处理:
$('your valid html string here...').find('a'); -
使用 jQuery,您的查询将只是
$(htmlString).find("*");
标签: javascript html-parsing html