Вот регулярное выражение, которое будет:
- Соответствует начальному и конечному именам элементов тега
- Извлечь значение атрибута id
- Извлечение внутреннего html-содержимого тега
Примечание:
Я ленив в сопоставлении значения атрибута здесь. Он должен быть заключен в двойные кавычки, и между именем атрибута и его значением не должно быть пробелов.
<([^\s]+).*?id="([^"]*?)".*?>(.+?)</\1>
Выполнение регулярного выражения в javascript будет выполнено так:
search = '<item id="item1">firstItem</item><item id="item2">secondItem</item>';
regex = new RegExp(/<([^\s]+).*?id="([^"]*?)".*?>(.+?)<\/\1>/gi);
matches = search.match(regex);
results = {};
for (i in matches) {
parts = regex.exec(matches[i]);
results[parts[2]] = parts[3];
}
В конце этого results
будет объект, который выглядит как:
{
"item1": "firstItem",
"item2": "secondItem"
}
YMMV, если элементы содержат вложенный HTML.