1

我正在研究一个可以读取 HTML 的解析器,但是拆分它的代码会导致“l”s 被插入到生成的数组的每个其他条目中。

正则表达式是这样的:

textarea.value.split(/(?=<(.|\n)+>)/)

它应该做的是拆分条目/退出/单个 HTML/XML 标记,同时忽略选项卡和行终止符(它只是将它们附加到它们被分割的标记)

我可以在现场了解发生了什么吗?您可以在此处查看代码并进行编辑:http: //jsfiddle.net/termtm/ew7Mt/2/ 只需在控制台中查看它产生的结果。

编辑: MaxArt 是正确的,最后的 l<html>导致异常为“l”s

4

1 回答 1

1

尝试这个:

textarea.value.split(/(?=<[^>]+>)/);

但是... Alnitak 说的。一个基于正则表达式的成熟的 HTML 解析器,特别是 Javascript 中正则表达式的功能支持很差,将是一个可怕的(和缓慢的)混乱。

我仍然需要找出您发现的奇怪行为的原因。请注意,“l”(ell)是 的最后一个字母"<html>",即 HTML 代码的第一个标记。将其更改为其他内容,您会注意到字母发生了变化。

于 2012-05-30T09:00:34.147 回答