Получить подстроку силами RegExp
Добрый день!
Помогите плиз. решить задачу. Есть строка: var str = "string <em>substring<em>substring</em>substring</em> xxx substring xxx <em>substring</em> xxx <em>substring</em>"; Необходимо используя регулярное выражение, выбрать из представленной строки подстроки (выделены underline): str = "string <em>substring<em>substring</em>substring</em> xxx substring xxx <em>substring</em> xxx <em>substring</em>"; То-есть необходимо выделить содержимое самых внешних тегов <em> Выражение, к которому я додумался: pattern = /\<em\>(.*?)\<\/em\>/g; Проблемы не решает, поскольку не выбирает вложенности. Заранее спасибо! |
Я считаю, что регулярными выражениями никак, но может кто-то считает по другому )))
|
var ems = (function() {
var re = /\<(\/?)em\>/g;
return function(str) {
var r = [], _, level = 0, last;
for (re.lastIndex = 0; _ = re.exec(str); )
if (!_[1]) {
if (!level++) last = re.lastIndex;
} else if (level && !--level)
r.push(str.substr(last, _.index - last));
if (level) r.push(str.substr(last));
return r;
};
})();
alert(ems('string <em>substring<em>substring</em>substring</em> xxx substring xxx <em>substring</em> xxx <em>substring</em>').join('\n'));
|
vk65535,
это же можно было сделать проще с помощью str.replace. |
vk65535 лихо! :) Спасибо, буду разбираться
|
| Часовой пояс GMT +3, время: 01:38. |