作者Numino (神聖光芒)
看板Ajax
標題[js] split正規表示式 ie bug?
時間Sat Jul 23 09:36:41 2011
ie對字串的split處理和firefox不一樣
代碼如下:
<script>
var sDebug="1,2,,3,4,,,5";
alert(sDebug.split(","));
//show "1,2,,3,4,,,5" in ie7 and firefox4
alert(sDebug.split(/,/g));
//show "1,2,,3,4,,,5" in firefox4
//show "1,2,3,4,5" in ie7
</script>
用正規表示式的時候,對多個連續分隔符,ie會自動合並
這個處理顯然是多余的,也可以說是錯誤的
因為通過不同的正規表示式 /,+/ 也可以做到自動合並
而且發現iis對split的處理存在同樣問題
不知道是不是MS的js解釋器的bug
--
隨便看看部落格
http://blog.numino.net
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.91.213.122
※ 編輯: Numino 來自: 218.91.213.122 (07/23 09:39)
1F:推 senser:我到不覺得是個bug 因為,,,用/,/檢驗 是會過的 ,,也是 07/23 16:26
2F:→ senser:當然,也沒錯 邏輯上都可以當separator 07/23 16:27
3F:→ Numino:文中提到的例子,在ie下 /,/ 和/,+/ 就沒差了 07/23 19:00
4F:→ Numino:一個case需要split(/[\n\r]/),在ie下多個\n就被合並成一個 07/23 19:03
5F:→ Numino:想了好久,沒想到簡單的解決辦法 07/23 19:05
6F:→ Numino:而且如s大所說,"1,2,3,4,5" 用/,/檢驗也會過,總覺得ie處理 07/23 19:07
7F:→ Numino:欠妥 07/23 19:07
8F:推 senser:只要一個的話 要不要試試前後加個^ 和$ 像這樣 /^[\n\r]$/ 07/24 06:41
9F:→ Numino:還是不行,\n\r本身也會被理解成$^,會出現奇怪的結果 07/24 09:16
10F:推 senser:那就試/[\n\r]{1}/ 吧 看看ok不ok lol 07/25 04:38
11F:→ Numino:試過,不行,還試過 /[\n\r]+?/,也不行 07/25 14:02
12F:推 senser:我剛開了ie 試一下 發現用regex真的搞不出來 然後我查了 07/25 16:06
13F:→ senser:一下 split() 發現好像沒有提到他可以塞RegEx 所以我就試了 07/25 16:07
14F:→ senser:.split("\n") 好像就ok了 不知道他分割的結果是你想要的嗎 07/25 16:08
15F:→ Numino:我原文裡就是說','沒問題了,如果"\n"可以解決就好了 07/25 17:23
16F:→ Numino:問題是\n或\r都有可能,後來把\r replace成\n,結果也很怪 07/25 17:25
17F:推 senser:你可以用regex把\r換成\n 然後再做split("\n") 這樣不行? 07/28 14:10
18F:→ Numino:回樓上,試過了,結果很怪,最後是逐個判斷char完成的,真辛苦 07/28 20:08