2012-08-24 47 views
1

這段代碼彙集了來自Firefox的不同結果IE8:的Javascript正則表達式跨瀏覽器的差異

var text = "[AMOUNT] MILES DEDUCTED IN [CABIN] FOR [ORIGIN]"; 
var splitArray = text.split(/[\[\]]/); 
alert(splitArray.length); 

在Firefox中,警告給出了7 而在IE瀏覽器,它提供了5

我試過......

Javascript RegEx trouble in Internet Explorer

,但它不工作。

有什麼想法嗎? 謝謝!

+0

什麼'splitArray'完全包含在FF和IE中?如果你說你「嘗試」了另一個問題的答案,你是否真的使用了腳本:http://blog.stevenlevithan.com/archives/cross-browser-split? –

+2

瀏覽器在正則表達式的'.split()'方面的行爲不同。 [見本頁。](http://blog.stevenlevithan.com/archives/cross-browser-split) – Pointy

+0

@FelixKling Firefox在數組的開頭和結尾提供空字符串,代表開始和結束處的方括號的原始字符串。 – Pointy

回答

0

下一頁碼不完全測試,但快速測試工作確定:

爲了獲得IE8和更少的分裂行爲:

var text = "[AMOUNT] MILES DEDUCTED IN [CABIN] FOR [ORIGIN]"; 
var arr = text.match(/[^\[\]]+/g); 
// arr is ["AMOUNT", " MILES DEDUCTED IN ", "CABIN", " FOR ", "ORIGIN"] 

要得到FF分裂行爲:

var text = "[AMOUNT] MILES DEDUCTED IN [CABIN] FOR [ORIGIN]"; 
var arr = text.match(/[^\[\]]+|^(?=[\[\]])|[^\[\]]?(?=[\[\]]$)|[^\[\]]?(?=[\[\]]{2})/g); 
// arr is ["", "AMOUNT", " MILES DEDUCTED IN ", "CABIN", " FOR ", "ORIGIN", ""]