Показать сообщение отдельно
  #1 (permalink)  
Старый 07.08.2017, 19:12
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

Обернуть <ol> в <p> - проблема с многострочностью
Есть необходимость во входных данных формы оборачивать все списки <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>, если предварительно удалить символы перевода строки, но такой способ мне не подходит - нарушается логика обработки остального текста.
Ответить с цитированием