[js] split正規表示式 ie bug?

看板Ajax作者 (神聖光芒)時間13年前 (2011/07/23 09:37), 編輯推噓5(5013)
留言18則, 2人參與, 最新討論串1/1
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)

07/23 16:26, , 1F
我到不覺得是個bug 因為,,,用/,/檢驗 是會過的 ,,也是
07/23 16:26, 1F

07/23 16:27, , 2F
當然,也沒錯 邏輯上都可以當separator
07/23 16:27, 2F

07/23 19:00, , 3F
文中提到的例子,在ie下 /,/ 和/,+/ 就沒差了
07/23 19:00, 3F

07/23 19:03, , 4F
一個case需要split(/[\n\r]/),在ie下多個\n就被合並成一個
07/23 19:03, 4F

07/23 19:05, , 5F
想了好久,沒想到簡單的解決辦法
07/23 19:05, 5F

07/23 19:07, , 6F
而且如s大所說,"1,2,3,4,5" 用/,/檢驗也會過,總覺得ie處理
07/23 19:07, 6F

07/23 19:07, , 7F
欠妥
07/23 19:07, 7F

07/24 06:41, , 8F
只要一個的話 要不要試試前後加個^ 和$ 像這樣 /^[\n\r]$/
07/24 06:41, 8F

07/24 09:16, , 9F
還是不行,\n\r本身也會被理解成$^,會出現奇怪的結果
07/24 09:16, 9F

07/25 04:38, , 10F
那就試/[\n\r]{1}/ 吧 看看ok不ok lol
07/25 04:38, 10F

07/25 14:02, , 11F
試過,不行,還試過 /[\n\r]+?/,也不行
07/25 14:02, 11F

07/25 16:06, , 12F
我剛開了ie 試一下 發現用regex真的搞不出來 然後我查了
07/25 16:06, 12F

07/25 16:07, , 13F
一下 split() 發現好像沒有提到他可以塞RegEx 所以我就試了
07/25 16:07, 13F

07/25 16:08, , 14F
.split("\n") 好像就ok了 不知道他分割的結果是你想要的嗎
07/25 16:08, 14F

07/25 17:23, , 15F
我原文裡就是說','沒問題了,如果"\n"可以解決就好了
07/25 17:23, 15F

07/25 17:25, , 16F
問題是\n或\r都有可能,後來把\r replace成\n,結果也很怪
07/25 17:25, 16F

07/28 14:10, , 17F
你可以用regex把\r換成\n 然後再做split("\n") 這樣不行?
07/28 14:10, 17F

07/28 20:08, , 18F
回樓上,試過了,結果很怪,最後是逐個判斷char完成的,真辛苦
07/28 20:08, 18F
文章代碼(AID): #1EAYM-NU (Ajax)