2011-08-22 15 views
55

私は文字列からスペースを削除するためのJQuery用の小さな小さなプラグインを作成しています。 see hereJavascript正規表現スペースを削除する

(function($) { 
    $.stripSpaces = function(str) { 
     var reg = new RegExp("[ ]+","g"); 
     return str.replace(reg,""); 
    } 
})(jQuery); 

私の正規表現は、すべてのスペースを収集するために、現在[ ]+です。 この私も[\s]+[\W]+を試みたが、どちらも働いていたしかしそれは ..私の口の中で良い味を残さない..動作します。..

だけを検索するより良い(より簡潔)の方法がなければなりませんスペース。

答えて

141

:私はそれが影響を与える何バージョンかわからないが、

jQuery.trimは、IEのために以下のハックがあります。文字クラス\sだけ' 'を使用しての違いはあります

//.. 
return str.replace(/\s/g, ''); 
//.. 

、この例えば、'\t\r\n'などの空白文字が多い場合は、' 'を探して、ASCII 32の空白スペースだけを置き換えます。

ビルドの場合は、この場合は不要ですが、RegExpのコンストラクタは便利です。

また、あなたが言ったように、"[\s]+"は、文字列を渡しているので、それはだ、との文字が内側にエスケープとしてあなたは「二重のエスケープ」バックスラッシュ、そうでない場合は解釈されるべきで、RegExpコンストラクタで働いていませんでした文字列(例:"\s" === "s"(エスケープ不明))。

1
str.replace(/\s/g,'') 

作品を私のため。私はあなたがリテラル表記を使用することをお勧めします、と\s文字クラスを使用します

// Check if a string has a non-whitespace character in it 
rnotwhite = /\S/ 

// IE doesn't match non-breaking spaces with \s 
if (rnotwhite.test("\xA0")) { 
    trimLeft = /^[\s\xA0]+/; 
    trimRight = /[\s\xA0]+$/; 
} 
11
"foo is bar".replace(/ /g, '') 
関連する問題