2009-08-19 23 views
0

我試圖用Javascript取代多行的東西,IE給我帶來麻煩。在Internet Explorer中多行js正則表達式替換

引擎收錄在這裏: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'。

在IE前兩行工作,但不是第三(和第四)。在Chrome和FF中,全部4條線都可以工作。

我沒有看到IE不應該支持的任何理由\ n。我做錯什麼了嗎?

在此先感謝。

感謝大家,很高興得知IE需要/ r/n而不僅僅是/ n。

任何建議讓我的代碼跨瀏覽器,而不只是IE瀏覽器或其他一切。

謝謝!

回答

0

CR/LF字符從IE到其他瀏覽器略有不同。在IE中它是\ r \ n。

跨瀏覽器解決方案:/什麼?\ r?\ n? ?up/

+0

謝謝,有關如何使它跨瀏覽器工作的任何建議? – Jourkey 2009-08-19 06:43:36

+0

查看更新的答案 – 2009-08-19 07:33:27

1

它在IE6中對我來說確實工作正常。然而,這應該是一個「更好的」正則表達式,因爲它會匹配\ r和\ n字符(這是IE可能會滑倒的地方 - 看到\ r而不是或\ n)以及任何空間。

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

對不起,我需要專門匹配一條新線,而不僅僅是一個空間。 – Jourkey 2009-08-19 06:42:53

+0

爲了記錄,在正則表達式中,將匹配任何「空格」 - 這包括空格(''),製表符(\ t),回車符(\ r),換行符(\ n)。 – jwpage 2009-08-19 11:07:23

1

Internet Explorer使用\r\n作爲<textarea>中的換行符。