2009-08-19 2 views
0

Я пытаюсь заменить что-то многострочное в Javascript, IE дает мне проблемы.Замена нескольких строк js regex в Internet explorer

Pastebin здесь: http://jsbin.com/olahi/edit

Объяснение того, что я пытаюсь сделать: Вот мой HTML:

<textarea id="editthis"> 
Hello from JS Bin 
Whats up from JS Bin 
Whats 
up from JS Bin 
</textarea > 

И мои JS:

jQuery.fn.runReplacement= function(expr) { 
    return this.each(function() { 
     this.innerHTML = this.innerHTML 
     .replace(/Hello/ig, "Hey") 
     .replace(/Whats ?\n? ?up/ig, "Hey") 
     ; 
    }); 
}; 

$(function() { 
    $("textarea").runReplacement(); 
}); 

В моих JS (JQuery) Например, я просто пытаюсь заменить Hello и «Whats up» на «Hey».

В IE первые две строки работают, но не третье (и четвертое). В Chrome и FF работают все 4 линии.

Я не вижу причин, по которым IE не должен поддерживать \ n. Я сделал что-то не так?

Заранее спасибо.

Спасибо всем, хорошо узнать, что IE нуждается/r/n, а не просто/n.

Любые предложения по созданию моего кросс-браузера, а не только IE или всего остального.

Спасибо!

ответ

0

CR/LF-символы немного отличаются от IE к другим браузерам. В IE это \ r \ n.

кросс-браузерное решение:/Whats? \ R? \ N? ? вверх/

+0

Спасибо, любые предложения о том, как сделать так, чтобы он работал кросс-браузер? – Jourkey

+0

см. Обновленный ответ –

1

Это действительно нормально работает для меня в IE6. Это, однако, должно быть «лучшим» регулярным выражением, так как оно будет соответствовать символам \ r и \ n (где IE может ускоряться - вид \ r вместо или, как и \ n), и любой пространства.

str.replace(/Whats\s+up/ig, "Hey") 
+0

Извините, мне нужно точно соответствовать новой строке, а не просто пробелу. – Jourkey

+0

Для записи в regex \ s будет соответствовать любое «пробельное пространство» - это включает пробелы (''), вкладки (\ t), возврат каретки (\ r), новые строки (\ n). – jwpage

1

Internet Explorer использует \r\n как символ новой строки в <textarea>.

Смежные вопросы