0

次の文字列分割 JavaScript コードがあります。

var formula = "(field1 + field2) * (field5 % field2) / field3";
console.log(formula.split(/[+(-)% *\/]/));

そして結果は予想外です:

["", "field1", "", "", "field2", "", "", "", "", "field5", "", "", "field2", "", "", "", "field3"]

望ましい結果は次のとおりです。

["field1", "field2", "field5", "field2", "field3"]

私は Google Chrome 11 公式リリースをテスト ブラウザとして使用しています。何が間違っているのか教えてください。

ありがとうございました!

ウィリアム

4

2 に答える 2

1

/[+(-)% *\/]/複数の分割で分割する代わりに: /[+(-)% *\/]+/. 最初と最後に空の一致が得られる可能性があります。この問題を解決するには、同様の正規表現を置換で使用できます。

formula.replace(/^[+(-)% *\/]+|[+(-)% *\/]+$/g, "").split(/[+(-)% *\/]+/)

そう

var formula = "(field1 + field2) * (field5 % field2) / field3";
console.log(formula.replace(/^[+(-)% *\/]+|[+(-)% *\/]+$/g, "").split(/[+(-)% *\/]+/));

収量

field1,field2,field5,field2,field3
于 2011-05-24T02:20:17.590 に答える
0

あなたはそれらのキャラクターのそれぞれで分裂しています。それらのグループに分割すると、希望する結果が得られます。

console.log(formula.split(/[+(-)% *\/]+/));

問題は1つだけです。文字列の最初と最後からこれらの文字を手動で削除する必要があります(または開始/終了時に空の文字列をポップオフする必要があります)。これは、split単独で処理できるものではありません。

于 2011-05-24T02:20:23.113 に答える