基于 REGEXP 的 string.prototype.split 插入故障

REGEXP based string.prototype.split insertion glitch

本文关键字:split 插入 故障 prototype string REGEXP 基于      更新时间:2023-09-26

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

正则表达式是这样的:

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

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

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

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

试试这个:

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

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

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