1. ホーム
  2. javascript

[解決済み] 103 /s/gと/Θs+/gは違うのですか?

2022-03-07 15:35:46

質問

スペース文字を含む文字列がある場合。

var str = '  A B  C   D EF ';

で、文字列からスペースを取り除きたい(こうしたい。 'ABCDEF' ).

どちらもこれ。

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

とこれを

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

は正しい結果を返します。

ということなのでしょうか? + は、この状況では不要なのでしょうか?この状況で、これら2つの正規表現に違いはあるのでしょうか(何らかの形で異なる結果を生み出す可能性があるという意味で)?


更新しました。 性能比較-。 /\s+/g の方が高速です。こちらをご覧ください。 http://jsperf.com/s-vs-s

解決方法は?

最初の正規表現で 各スペース文字 を一文字ずつ空文字列に置き換えています。

2つ目の正規表現では 連続する各文字列 のため、空白文字が空文字に置き換えられています。 + .

しかし、0に何かをかけても0になるように、どちらの方法も全く同じようにスペースを除去しているように見えます。

置換文字列を '#' ということで、その違いがより明確になりました。

var str = '  A B  C   D EF ';
console.log(str.replace(/\s/g, '#'));  // ##A#B##C###D#EF#
console.log(str.replace(/\s+/g, '#')); // #A#B#C#D#EF#