Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   unterminated regular expression literal (https://javascript.ru/forum/misc/11856-unterminated-regular-expression-literal.html)

Юрий Никольский 17.09.2010 13:23

unterminated regular expression literal
 
s.replace(/\r\n|\r|\n/g,"<br>");
       alert( s );


фаербаг выдает следуещее

s.replace(/
|
|
/g,"<br>");
alert( s );

Взял готовый пример.
Что не так?

e1f 17.09.2010 14:25

А Вы случайно не так это все используете?
eval("'\\n\\n\\n'.replace(/\r\n|\r|\n/g,'<br>');")

Юрий Никольский 17.09.2010 14:31

Что-то я не догоняю.
Какая случайность?

e1f 17.09.2010 14:40

Такое возможно, если внутри regexp'a символ перевода строки стал именно переводом строки. Приведите пример того, как Вы этот код используете. Ну, и наверняка поможет записать regexp так: /\\r\\n|\\r|\\n/g

Юрий Никольский 17.09.2010 14:48

Так я привел две сточки в начале

Kolyaj 17.09.2010 14:49

Сомневаюсь, что то, что вы привели, используется именно так.

Юрий Никольский 17.09.2010 14:57

s.replace(/\\r\\n|\\r|\\n/g, "<br>");
alert( s );

С этим вариантом другая ошибка
s.replace is not a function

e1f 17.09.2010 15:04

Юрий Никольский, раз пишет, значит так оно и есть -- s НЕ строка, поэтому метода replace у нее нет. Повторюсь, приведите именно тот пример, который у Вас выдает ошибку, целиком.

рони 17.09.2010 15:05

s как формируеться? для примера...
var s = '123\r345\n';
s=s.replace(/\r\n|\r|\n/g,"<br>");  
alert( s );

Юрий Никольский 17.09.2010 15:09

<textarea id='editor' name='desc' rows=29 cols=110>$techdesc</textarea>

function save() {
       var el = document.getElementById( 'editor' );
       el.style.visibility = "hidden";
       vote( el.value );
       var s =el,value;
       s.replace(/\\r\\n|\\r|\\n/g, '<br>');
       alert( s );
       document.getElementById( 'desc' ).innerHTML = '<ul><li>' + el.value;
   }

Юрий Никольский 17.09.2010 15:10

Формируется в textarea

Юрий Никольский 17.09.2010 15:19

Вместо точки запятая стоит.
Пол дня сослепу потратил.
Увидел только на форуме.
Спасибо! Извините, что голову морочил.

Юрий Никольский 17.09.2010 15:40

Обрадовался, что ошибку убрал.
Теперь не заменяет
function save() {
       var el = document.getElementById( 'editor' );
       el.style.visibility = "hidden";
       vote( el.value );
       var s = el.value;
       s.replace(/\\r\\n|\\r|\\n/g, '<li>');
       alert( s );
       document.getElementById( 'desc' ).innerHTML = '<ul style="list-style-type:circle"><li>' + s;
   }

Юрий Никольский 17.09.2010 15:45

http://www.pcshop.ru/cgi-bin/techdesc.pl?id=0

e1f 17.09.2010 15:56

Ну, а теперь экранирование уберите со \r и \n

Юрий Никольский 18.09.2010 03:01

Это еще непонятнее
function save() {
       var el = document.getElementById( 'editor' );
       el.style.visibility = "hidden";
       vote( el.value );
       var s =el.value;
       s.replace(/\r\n|\r|\n/g, '<li>');
       alert( s );
       document.getElementById( 'desc' ).innerHTML = '<ul style="list-style-type:circle"><li>' + s;
   }

save is not defined

Line 1

Юрий Никольский 18.09.2010 10:44

Сдался. JS меня победил.
Сделал все на серверной стороне, раз сервер все равно отвечает.
Там есть своя проблема с методом POST.
О ней написал в разделе AJAX.

B@rmaley.e><e 19.09.2010 10:18

Цитата:

Сообщение от Юрий Никольский
save is not defined

Значит save не попадает в тот контекст (скорей всего глобальный), в котором Вы хотите его видеть. Для явного указания записи в глобальное пространство имен используйте
window.save = function(){
/*...*/
}

Юрий Никольский 22.09.2010 01:26

Ошибка возникает, даже если строчку с replace закоментировать.
Если совсем удалить строчку, то ошибки нет.
Видимо это фитча версии 3.6.10.


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