5

私は比較的現代的なブラウザ(したがってIEの場合、バージョン> = 7)の空白を置き換えたいと思います。それは次のいずれかのような非破壊可能なスペースを使用して失敗したもののResult: 'Helloworld!'JavascriptでIE7とIE8の中断されない空白を一致させる

しかし、IE7とIE8で:我々は出力に期待

<script type="text/javascript"> 
document.write("Result: '" + "Hello world!".replace(/\s/g, '') + "'"); 
</script> 

:したがって、私たちはどうなる文字列"Hello world!"を与え

例えば:&#160; == &nbsp; == \u00A0

<script type="text/javascript"> 
document.write("Result: '" + String.fromCharCode(160).replace(/\s/g, '') + "'"); 
</script> 

IEでIE> = 9およびResult : ' 'を出力します。IE7およびIE8では、Result: 'Helloworld!'をFFに、IE> = 9およびResult : ' 'を出力します。なんてこったい?

これが唯一の例外ではないかと思います。私はこれに関する多くの情報を全く見つけることができませんでした。すべての空白を削除する正規表現がありますか非破壊?

答えて

2

は、このいずれかを使用します。

replace(/(?:\s|\xA0|&nbsp;|&#160;)+/g, '') 

replace(/[\s\xA0]+/g, '') 
+0

あなたのオリジナルの答えは動作しません。文字がエンコードされると ' 'は役に立たなくなります。これは問題全体です。 –

+0

@Asad - 私の元の答えでは、ソリューションにすべてのブラウザ(特殊文字をエンコードしないものも含む)が動作することを保証するために、 ' 'と ' 'をpatternに含めました。 –

+0

いいえ、元の回答には '\ s'と文字列'   'が含まれています。あなたの編集では、16進コードと同様に役に立たない ' 'が含まれています。 –

関連する問題