3

文字列をいくつかの区切り文字で分割しようとしていますが、返された配列に区切り文字を含めたいと思います。たとえば、この文字列"hello i=5 (goodbye)"をスペース、代入演算子、および括弧で分割したいとします。その文字列を分割する方法を知る唯一の方法は、次のようにすることです。"hello i=5 (goodbye)".split(/[\s=)(]/);ただし、返される配列は["hello", "i", "5", "", "goodbye", ""]です。結果に区切り文字を含める方法はありますか?返して欲しい["hello", "i", "=", "5", "(", "goodbye", ")"]

助けてくれてありがとう!

4

3 に答える 3

3

match単一の正規表現で、必要なシンボルと、必要なシンボルと一致しないグループを使用して一致させることができます。

"hello i=5 (goodbye)".match(/[\s=)(]|[^\s=)(]+/g)
// result: ["hello", " ", "i", "=", "5", " ", "(", "goodbye", ")"]

スペースを取り除きたい場合は.filter(function(el){ return el.trim(); })、上記にチェーンすることができます。

于 2013-02-09T00:22:03.290 に答える
0

一致する文字の直前に空の文字列を選択する先読みを使用できます。

/(?=[\s=)(])/

後読みについては、メッチに続く空の文字列を選択するには、次のいずれかの方法を使用します。

お役に立てれば!!

于 2013-02-09T00:23:43.573 に答える
0
"hello i=5 (goodbye)".replace(/[\s=)(]/g, function(a){return ","+a+","}).split(/,/);

出力:

[hello,  , i, =, 5,  , , (, goodbye, ), ]

秘訣は、コンマなどの別の区切り文字を導入することです。新しいセパレータは元の文字列に存在してはならないことに注意してください。

于 2013-02-09T00:34:57.117 に答える