私はすでにほぼ同じ他の質問を見ており、少しカスタマイズしてRegExrで機能するソリューションを見つけました。問題は、Javascript で動作しないことです。
表現:([^\s]*"[^"]+"[^\s]*)|[^"]?\w+[^"]?
テスト文字列:+w1 @w2 (w3 (w4) @"w5 6"
期待される結果:['+w1', '@w2', '(w3', '(w4)', '@"w5 w6"']
Javascript コード:console.log(/([^\s]*"[^"]+"[^\s]*)|[^"]?\w+[^"]?/g.exec(test_str));
Javascript の結果: ["+w1 ", undefined]
(FF15 および Chrome 22 でテスト済み)
MDN のドキュメントを調べましたが、グローバル フラグ以外に関連するフラグはありません。試しに、複数行の大文字と小文字を区別しないフラグを追加しましたが、役に立ちませんでした。
RegExr で動作しているように見えるのに、Javascript で壊れる原因は何ですか? (そして、Flash の Actionscript も ECMAScript ではないので、RegExr は同じ正規表現エンジンを使用すべきではありませんか?) RegExr では、有効なフラグはグローバル フラグのみです。
編集:もう1つの問題は、"w1 \"w2\" w3"
1つの単語である必要があるのに2つの単語として一致することです。何か案は?