Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   RegExp + Многострочный текст (\r) (https://javascript.ru/forum/events/9979-regexp-mnogostrochnyjj-tekst-%5Cr.html)

FreePaint 14.06.2010 11:00

RegExp + Многострочный текст (\r)
 
Всем привет.
Возникла проблема при парсинге многострочного текста с \n и \r и т.д

Суть в том, что через Ajax PHP приложение шлёт нам текст, в котором переносы, \n \r и т.д
Но когда получаю эти данные в JavaScript, то при match у текста в одну строку, всё норм, а у текста в несколько строк вообще не работает.

Регулярку делаю так var rex = new RegExp('<b>(.*?)<\/b>',"im");
P.S вроде в регулярке поставил m... толку 0

Если PHP приложение шлёт в таком виде:
$TEXT = '<b>Я ОЛОЛОЛО</b>';

то всё нормально.

А если PHP приложение шлёт в таком виде:
$TEXT = '<b>;lk;lk;
       l;;jkkj
       kjlkjjljjlkjklj</b>';

то match у JavaScript усирается каллавыми массами.

Kolyaj 14.06.2010 11:15

/<b>([\s\S]*?)<\/b>/

FreePaint 14.06.2010 12:01

Нет не работает вообще)

Kolyaj 14.06.2010 13:09

Работает.

exec 14.06.2010 13:17

FreePaint, в строке нельзя использовать переносы строк. Заменяйте их на \n или экранируйте их.

B@rmaley.e><e 14.06.2010 14:00

Цитата:

Сообщение от exec
FreePaint, в строке нельзя использовать переносы строк. Заменяйте их на \n или экранируйте их.

В php можно.

exec 14.06.2010 14:05

B@rmaley.e><e, у него ведь из PHP код в JS выводится.

FreePaint 14.06.2010 14:22

Цитата:

Заменяйте их на \n или экранируйте их.
Эхх в начале так и делал... :) Просто думал что можно реализовать чисто на JS, но раз Вы пишите что JS пучет с переносами, буду заменять в пхп.

Спасибо всем за советы, да пребудет с Вами сила !!!

FreePaint 14.06.2010 14:32

Сделал так, не стал в ПХП убирать переносы, а уже в самом JavaScript, в полученном тексте сразу сделал replace(/\r\n/g,'')

B@rmaley.e><e 14.06.2010 16:53

exec, \n это и есть переносы строк.
Если же вы имели в виду, что делать что-то вроде
Код:

alert('<?php
echo "line1
line2
line3";
?>')

Нельзя, то
Цитата:

Сообщение от FreePaint
Суть в том, что через Ajax PHP приложение шлёт нам текст

FreePaint, exec бредит, не слушайте его.
alert('<b>trololo\r\nololo</b> <b>trololo\r\nololo</b>'.match(/<b>([\s\S]*?)<\/b>/i)[1])

И еще: при задании регулярки через new RegExp не забывайте экранировать слеши в строке.


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