我需要在Javascript中实现一个RegExp,它允许我匹配以下类别和项目,将项目与其正确的类别相关联,但我不知道如何:
<table>
<tbody>
<tr>
<td>
<a href="mycategory1.asp">text</a>
</td>
</tr>
</tbody>
</table>
<div>
<table>
<tbody>
<tr>
</td>
<a href="myitem1.asp">text</a>
<td>
</tr>
<tr>
</td>
<a href="myitem2.asp">text</a>
<td>
</tr>
<tr>
</td>
<a href="myitem3.asp">text</a>
<td>
</tr>
.....................
</tbody>
</table>
</div>
<table>
<tbody>
<tr>
<td>
<a href="mycategory2.asp">text</a>
</td>
</tr>
</tbody>
</table>
我可以有超过10个类别,我不知道每个类别中有多少项目。 我可以轻松地创建一个与我的类别匹配的RegExp和另一个与项目匹配的RegExp,但是如何在它们之间创建关系呢?
谢谢和最诚挚的问候,
利维奥
答案 0 :(得分:1)
不要使用Regexes阅读HTML。给表类,然后使用DOM遍历读取它们。 HTML应该如下所示:
<table class="caption">
<tbody>
<tr>
<td>
<a href="mycategory1.asp">text</a>
</td>
</tr>
</tbody>
</table>
<div>
<table class="itemlist">
<tbody>
<tr>
</td>
<a href="myitem1.asp">text</a>
<td>
</tr>
<tr>
</td>
<a href="myitem2.asp">text</a>
<td>
</tr>
<tr>
</td>
<a href="myitem3.asp">text</a>
<td>
</tr>
.....................
</tbody>
</table>
</div>
<table class="caption">
<tbody>
<tr>
<td>
<a href="mycategory2.asp">text</a>
</td>
</tr>
</tbody>
</table>
...
然后像这样列出他们:
var captions = document.getElementsByClassName("caption");
var itemlists = document.getElementsByClassName("itemlist");
var items = new Array();
for (var i=0; i<captions.length; i++) {
var categoryLink = captions[i].getElementsByTagName("a")[0];
var categoryItems = itemlists[i].getElementsByTagName("a");
for (int j=0; j<categoryItems.length; j++) {
items.push({"itemname":categoryItems[j].innerHTML,
"itemurl":categoryItems[j].href,
"categoryname":categoryLink.innerHTML,
"categoryurl":categoryLink.href});
}
}
答案 1 :(得分:0)
正则表达式不是所有问题的灵丹妙药.RegEx用于使用模式进行文本匹配。恕我直言,使用任何XML解析器可以更好地解决这个问题。