Получить подстроку силами 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, время: 18:36. |