私がテストしたものから
"aba".split(/a/).length
戻り値
- IE8の1
- Firefox、クローム、オペラで3
私は常にDOM操作やイベントモデルの違いを処理する準備ができていましたが、文字列や正規表現などは明確に定義されていると思いました。私は間違っていましたか?
私がテストしたものから
"aba".split(/a/).length
戻り値
私は常にDOM操作やイベントモデルの違いを処理する準備ができていましたが、文字列や正規表現などは明確に定義されていると思いました。私は間違っていましたか?
IEは、split
結果配列からすべての未定義または空の文字列を削除します。
あなたの質問は標準の存在についてであるように思われるので、EcmaScriptはJavascriptの世界で最もよく一致します。
そして、正規表現での分割の動作が文書化されています:http ://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.14
例から明らかなように、結果の配列から空の文字列を削除するべきではないため、IE(疑わしい)に障害があります。
"A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/)
evaluates to the array
["A", undefined, "B", "bold", "/", "B", "and", undefined, "CODE", "coded", "/", "CODE", ""]
実際、ブラウザ間には他にも違いがあります。解決策は、クロスブラウザの分割正規表現スクリプトを使用することですが、違いを認識し、によって返される配列を適切なテストで処理する方がおそらく良いでしょうsplit
。または、いくつかのトリックを使用します。