1. ホーム
  2. javascript

[解決済み] Javascript の正規表現で空白を削除する

2022-10-27 16:34:52

質問

JQueryで文字列からスペースを除去する小さなプラグインを書いています。 ここを参照してください

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

私の正規表現は現在 [ ]+ として、すべてのスペースを収集します。 これはうまくいくのですが...口の中に良い味を残しません...。 私はまた、試してみました [\s]+[\W]+ としましたが、どちらもうまくいきませんでした。

スペースだけを検索する、より良い(より簡潔な)方法があるはずです。

どのように解決するのですか?

リテラル表記にすることをお勧めします。 \s という文字クラスがあります。

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

文字クラスを使うのと \s を使うのと、単に ' ' のように、より多くの空白文字にマッチします。 '\t\r\n' などのように、より多くの空白文字にマッチします。 ' ' を探すと、ASCII 32 の空白文字だけが置き換えられます。

RegExp のコンストラクタを使用すると便利です。 を構築します。 を構築したい場合に有効ですが、この場合は必要ありません。

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