提问者:小点点

用javascript查找HTML标记在文本中的位置,最好不要使用正则表达式?


我有包含HTML标记的文本。我想找出每个标记对的开始和结束位置。即开始标记的文本位置和标记的文本位置。

因为我知道用正则表达式匹配标记是复杂的(关于嵌套标记、引号等)我想使用一些更可靠的方法,例如DOM函数。

我的文本示例:

text <tag>text text </tag> text

使用我的示例文本,结果应该是两个数字-5(开始标记的位置)和26(结束标记最后一个字母的位置)

我的文本的复杂示例:

text <tag> text <tag2> text </tag2> text </tag> text

在第二个示例中,结果应该是两个数字-5和47(第一级标记的结束位置-我不关心嵌套标记)

这可能吗?期待任何提示和帮助。非常感谢。


共1个答案

匿名用户

虽然这并没有回答关于位置的问题,但您可能需要看看XMLDom。您将不得不人为地为文档创建一个根节点,但是事情应该是这样的:

var txt = "text <tag> text <tag2> text </tag2> text </tag> text";
txt = '<root>' + txt + '</root>';

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(txt, "text/xml");

alert(xmlDoc.firstChild.childNodes);