1. ホーム
  2. javascript

[解決済み] 文章を「,」で分割し、周囲のスペースを削除する。

2023-01-15 06:05:20

質問

このようなコードがあります。

var r = /(?:^\s*([^\s]*)\s*)(?:,\s*([^\s]*)\s*){0,}$/
var s = "   a   ,  b  , c "
var m = s.match(r)
m => ["   a   ,  b  , c ", "a", "c"]

文字列全体がマッチしたように見えますが、どこに "b" はどこに行ったのでしょうか?むしろ期待したいのは

["   a   ,  b  , c ", "a", "b", "c"]

ができるように m.shift() のような結果で s.split(',') のような結果になりますが、空白文字が削除されています。

正規表現に間違いがあるのか、それとも私が誤解しているのか String.prototype.match ?

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

ということで、最終的には /(?=\S)[^,]+?(?=\s*(,|$))/g これはまさに私が必要としているもので、すべての文章が周囲のスペースなしで「,」で分割されています。

'       a,    OMG     abc b a b, d o WTF        foo     '.
  match( /(?=\S)[^,]+?(?=\s*(,|$))/g )
=> ["a", "OMG     abc b a b", "d o WTF        foo"]

ありがとうございます