Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обернуть <ol> в <p> - проблема с многострочностью (https://javascript.ru/forum/misc/70060-obernut-ol-v-p-problema-s-mnogostrochnostyu.html)

WalterScott 07.08.2017 19:12

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

j0hnik 07.08.2017 19:23

$("ol").wrap("<p></p>");

так нельзя?

рони 07.08.2017 19:34

WalterScott,
var list = '<ol>\n'+
'<li>item1</li>\n'+
'<li>item2</li>\n'+
'<li>item3</li>\n'+
'</ol>';
list = list.replace(/(<ol>[\s\S]*?<\/ol>)/gm, '<p>$1</p>');
alert(list);

WalterScott 08.08.2017 12:30

Цитата:

Сообщение от рони (Сообщение 460897)
WalterScott,
var list = '<ol>\n'+
'<li>item1</li>\n'+
'<li>item2</li>\n'+
'<li>item3</li>\n'+
'</ol>';
list = list.replace(/(<ol>[\s\S]*?<\/ol>)/gm, '<p>$1</p>');
alert(list);

Да, так работает, спасибо.



Цитата:

Сообщение от j0hnik (Сообщение 460896)
$("ol").wrap("<p></p>");

так нельзя?

jQuery в этом скрипте в принципе доступен. Наверное можно, но я не разбирался, как это применить именно к вводу формы.

ksa 08.08.2017 13:34

Цитата:

Сообщение от j0hnik (Сообщение 460896)
$("ol").wrap("<p></p>");

так нельзя?

Ну это уже не совсем строка с текстом получится... Это будет объект жиКвери.


Часовой пояс GMT +3, время: 16:08.