2008-05-24 (土)
■ 正規表現で split した場合の IE の挙動
JavaScript の split では引数に正規表現が使えることを知ったので、 以前書いた 空白やカンマで区切られたデータを配列に変換する 処理を、 次のように書き直してみました。
var F = datt.replace(/^\s+|\s+$/g, "").split(/[\s,]+/);
このように、前後の空白を trim した後、 空白文字 or カンマのかたまりを区切り文字にして split という、 非常にすっきりとしたコードにすることができます。
さて、ここからが本題ですが、 実は split の引数に正規表現を使うと、Internet Explorer は奇妙な動作をします。
- あーありがち - 正規表現で文字列を split すると、できた配列から空の要素が消える
- 風柳亭 - 別館:書庫のある庵 -: 【JavaScript】IE6のString.split()の不具合と対策
試しに、次のようなコードを実行してみます。
var str = " a , b, c ,d e f,g "; var str1 = str.split(/[\s,]/); var str2 = str.replace(/^\s+|\s+$/g, "").split(/[\s,]+/); alert(str1); alert(str2);
IE 以外のブラウザでは、結果は以下のようになります。
,,a,,,,,b,,c,,d,,e,f,g, a,b,c,d,e,f,g
ところが IE で実行すると、結果は次のようになります。
a,b,c,d,e,f,g a,b,c,d,e,f,g
このように、正規表現での split は便利ですが、 ブラウザによって動作が違うことがあるので注意する必要があります。
ちなみにこの挙動を逆に利用すると、最初に書いたコードは、IE 限定で良ければ、
var F = datt.split(/[\s,]/);
だけで済ませる事が出来ます。 しかし、この動作はバグっぽいですし、IE8 では動作が変わったりするかもしれないので、 最初に書いたようなコードにしておくのが無難だと思います。
[コメントを書く]
本日のリンク元
- 25 google検索(javascript split)
- 14 google検索(javascript split)
- 11 google検索(javascript 正規表現)
- 7 google検索(javascript 正規表現)
- 6 google検索(javascript 正規表現)
- 5 google検索(javascript split)
- 5 google検索(JavaScript 正規表現)
- 4 google検索(jquery split)
- 4 google検索(javascript split)
- 4 google検索(javascript split)
- 4 google検索(javascript split)
- 3 google検索(javascript split)
- 3 google検索(javascript split)
- 3 google検索(split javascript)
- 3 google検索(javascript split 配列 カンマ)
- 3 google検索(javascript split)
- 3 google検索(javascript 正規表現)
- 3 google検索(javasclipt split)
- 3 google検索(正規表現 javascript)
- 3 http://www.google.co.jp/hws/search?hl=ja&q=javascr...
- 2 google検索(javascript split)
- 2 google検索(javascript 正規表現)
- 2 google検索(javascript split 正規表現)
- 2 google検索(javascript sprit IE)
- 2 google検索(javascript split ')
- 2 google検索(javascript split)
- 2 google検索(javascript 正規表現)
- 2 google検索(split 正規表現)
- 2 google検索(javascript split)
- 2 google検索(javasclipt 正規表現)
- 2 google検索(Javascript split)
- 2 google検索(IE 7 split javascript)
- 2 google検索(split javascript)
- 2 google検索(javascript split 正規表現)
- 2 google検索(javascript 正規表現)
- 2 http://www.google.co.jp/hws/search?hl=ja&q=javascr...
- 2 http://www.google.co.jp/hws/search?hl=ja&q=JavaScr...
- 2 http://www.google.co.jp/hws/search?hl=ja&q=IE spli...
- 2 http://www.google.co.jp/hws/search?client=dell-row...
- 2 http://so-net.search.goo.ne.jp/so-net/web.jsp?MT=j...
- 2 msn検索(javascript 正規表現)
- 2 msn検索(javascript 正規表現 [ ])
- 2 http://s.luna.tv/search.aspx?client=lunascape&s=0&...
- 2 http://azby.search.nifty.com/cgi-bin/search.cgi?cf...
- 1 http://www.revulo.com/
- 1 google検索(split Javascript)
- 1 google検索(javascript sprit)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript 正規表現)
- 1 google検索(jquery split)
- 1 google検索(javascript split)
- 1 google検索(正規表現)
- 1 google検索(javascript split)
- 1 google検索(javascript Split 正規表現)
- 1 google検索(split 正規表現 IE)
- 1 google検索(split 正規表現)
- 1 google検索(jquery 正規表現)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript 正規表現 split)
- 1 google検索(javascript 正規表現 空白)
- 1 google検索(jQuery 正規表現 \d)
- 1 google検索(javascript split)
- 1 google検索(javascript split 正規表現)
- 1 google検索(javascript split 正規表現)
- 1 google検索(javascript ie 正規表現)
- 1 google検索(javascript 正規表現 バグ)
- 1 google検索(正規表現 javascript)
- 1 google検索(javascript split)
- 1 google検索(split javascript 正規表現)
- 1 google検索(split 空白 php 正規表現)
- 1 google検索(javascript split 正規表現)
- 1 google検索(javascript 日本語正規表現)
- 1 google検索(正規表現 javascript)
- 1 google検索(正規表現 IE)
- 1 google検索(javascript split)
- 1 google検索(Ruby split 正規表現)
- 1 google検索(Javascript 正規表現)
- 1 google検索(jquery split)
- 1 google検索(javascript split 正規表現)
- 1 google検索(javascript split)
- 1 google検索(javascript 正規表現 split)
- 1 google検索(javascript split())
- 1 google検索(javascript 正規表現 email)
- 1 google検索(javascript split)
- 1 google検索(javascript replace split)
- 1 google検索(javascript 正規表現 replace /^\s+|\s+$/g)
- 1 google検索(javascript split)
- 1 google検索(正規表現 javascript ^|)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript split)
- 1 google検索(javascript 正規)
- 1 google検索(正規表現 javascript)
- 1 google検索(javascript 正規表現)
