michael@0: var rg = /(X(?:.(?!X))*?Y)|(Y(?:.(?!Y))*?Z)/g; michael@0: var str = "Y aaa X Match1 Y aaa Y Match2 Z"; michael@0: assertEq(str.match(rg) + "", "X Match1 Y,Y Match2 Z");