Если вы не заботитесь о вложении, вам даже не нужно регулярное выражение. Просто замените "<<
" на "<div class='left'>
" и т. Д.
Чтобы разрешить вложение, вам придется (1) изменить разметку, чтобы конец отличался от начала (например, <L>
content </L>
), и (2) выполнить регулярное выражение столько раз, сколько уровней , Регулярное выражение (для левого div) будет:
<L>(((?!</?L>).)*)</L>
И строка замены:
<div class="left">$1</div>
Вот функция, которая позаботится о разборе всех уровней:
function parseLeft(markup) {
var regex = /<L>(((?!<\/?L>).)*)<\/L>/g;
out = markup.replace(regex, '<div class="left">$1</div>');
if (out.length == markup.length) {
return out;
} else {
return parseLeft(out);
}
}
Пример в действии:
> parseLeft('<L> Outer div <L>inner div</L>outer again </L>');
<div class="left"> Outer div <div class="left">inner div</div>outer again </div>