Есть необходимость во входных данных формы оборачивать все списки <ol> в тег <p>.
Первоначально попытался это сделать так
text = text.replace(/(<ol>.*<\/ol>)/g, '<p>$1</p>');
Так не сработало. Как выснилось, дело в переводах строки, потому что если убрать переносы строки, чтобы код списка был одной строкой,
то всё работает.
Попытался учесть переводы строки в регекспе
text = text.replace(/(<ol>[\s\S].*[\s\S]<\/ol>)/gm, '<p>$1</p>');
Но ничего не изменилось.
Сделал простой тест. Вот в этом случае список оборачивается в <p></p>
var list = '<ol>'+
'<li>item1</li>'+
'<li>item2</li>'+
'<li>item3</li>'+
'</ol>';
list = list.replace(/(<ol>[\s\S].*[\s\S]<\/ol>)/gm, '<p>$1</p>');
alert(list);
а вот в этом нет:
var list = '<ol>\n'+
'<li>item1</li>\n'+
'<li>item2</li>\n'+
'<li>item3</li>\n'+
'</ol>';
list = list.replace(/(<ol>[\s\S].*[\s\S]<\/ol>)/gm, '<p>$1</p>');
alert(list);
Получается обернуть в <p>, если предварительно удалить символы перевода строки, но такой способ мне не подходит - нарушается логика обработки остального текста.