Javascript正規表現でスペースを削除


90

だから私は文字列からスペースを削除するためのJQuery用の小さなプラグインを書いています。ここを参照してください

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

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

スペースのみを検索するためのより良い(より簡潔な)方法が必要です。

回答:


231

リテラル表記と\s文字クラスを使用することをお勧めします。

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

文字クラスの使用\sと単にの使用には違いがあります。これは、' 'たとえば、より多くの空白文字に一致し'\t\r\n'ます。検索する' 'と、ASCII32の空白スペースのみが置き換えられます。

RegExpあなたがしたいときにコンストラクタは便利です建てるあなたがそれを必要としないこのような場合には、動的パターンを。

さらに、あなたが言ったように"[\s]+"RegExpコンストラクターでは機能しませんでした。これは、文字列を渡すためです。バックスラッシュを「ダブルエスケープ」する必要があります。そうしないと、文字列内の文字エスケープとして解釈されます(例:("\s" === "s"不明逃れる))。



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

私のために働きます。

jQuery.trim IEには次のハックがありますが、どのバージョンに影響するかはわかりません。

// 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]+$/;
}

1

文字列内のすべてのスペースを削除します

// Remove only spaces
`
Text with spaces 1 1     1     1 
and some
breaklines

`.replace(/ /g,'');
"
Textwithspaces1111
andsome
breaklines

"

// Remove spaces and breaklines
`
Text with spaces 1 1     1     1
and some
breaklines

`.replace(/\s/g,'');
"Textwithspaces1111andsomebreaklines"

1

生産中およびラインブレイクを越えて動作

これは、ユーザーが生成したコンテンツをクリーンアップして余分なスペースやリターンなどを削除するためにいくつかのアプリで使用されますが、スペースの意味は保持されます。

text.replace(/[\n\r\s\t]+/g, ' ')

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.