77

私は通常、JavaScript で次のコードを使用して、文字列を空白で分割します。

"The quick brown fox jumps over the lazy dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

これはもちろん、単語間に複数の空白文字がある場合でも機能します。

"The  quick brown fox     jumps over the lazy   dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

問題は、先頭または末尾に空白がある文字列がある場合です。この場合、結果の文字列の配列には、配列の先頭および/または末尾に空の文字が含まれます。

"  The quick brown fox jumps over the lazy dog. ".split(/\s+/);
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]

このような空の文字を削除するのは簡単な作業ですが、可能であれば正規表現内でこれを処理したいと思います。この目標を達成するために使用できる正規表現を知っている人はいますか?

4

4 に答える 4

122

空白ではないビットに関心がある場合は、空白で分割する代わりに、非空白を一致させることができます。

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g);

次の結果が返されることに注意してくださいnull

"   ".match(/\S+/g)

したがって、学ぶのに最適なパターンは次のとおりです。

str.match(/\S+/g) || []
于 2013-02-16T16:37:31.410 に答える
51

" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);

于 2013-02-16T16:36:26.377 に答える
16

空白シーケンスで分割する代わりに、空白以外のシーケンスと一致させることができます。

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g)
于 2013-02-16T16:37:33.283 に答える