正規表現に 2 つの省略可能な部分が必要です。どちらも一致する文字列で見つけることができ、両方を同時に見つけることもできます。
これらのオプション部分はどちらもワイルドカードで構成されています (.*
ここに書きましたが、言うことができます。とにかく、貪欲なマッチングが適用される場合[a-zA-Z]+
、正規表現の 2 番目の部分 ( ) がワイルドカードと一致することがポイントです)。Bar
これは、次の Firebug 出力で最もよく示されています。
>>> /(Foo.*)?(Bar.*)?/.exec("FooAA")
["FooAA", "FooAA", undefined] // OK
>>> /(Foo.*)?(Bar.*)?/.exec("BarAA")
["BarAA", undefined, "BarAA"] // OK
>>> /(Foo.*)?(Bar.*)?/.exec("FooAABarAA")
["FooAABarAA", "FooAABarAA", undefined] // I'd like to have ["FooAABarAA", "FooAA", "BarAA"]
上記の 3 つのテスト ケースに一致する正規表現を作成する方法はありますか?
私はsthのように使うことができます
/((Foo.*)(Bar.*))|(Foo.*)?(Bar.*)?/.exec("FooAABarAA")
しかし重複は避けたい。