我想在我的正则表达式中有两个可选部分——它们中的任何一个都可以在匹配的字符串中找到,而且它们都可以同时出现。
这两个可选部分都包含一个通配符(我在.*
这里写过,但可以说;无论如何,如果应用贪婪匹配[a-zA-Z]+
,正则表达式 () 的第二部分与通配符匹配)。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"]
有没有办法构造一个匹配我上面三个测试用例的正则表达式?
我可以使用 sth like
/((Foo.*)(Bar.*))|(Foo.*)?(Bar.*)?/.exec("FooAABarAA")
但我想避免重复。