If the following function is called in node v0.10.26:

```
    function parseAndLog(constraint) {
        var constraintRegex = /\s*(.*?)\s*(<=|==|>=|[GL]?EQ)\s*(.*?)\s*(!required|!strong|!medium|!weak)?/;
        console.log(constraintRegex.exec(constraint));
    }

```

with the input:

```
"thumb.top == group.top + 20"

```

I expected that the following would be returned as substring matches (as happens when a similar function is called in Java)

```
thumb.top 
==
group.top + 20

```

But only the following is returned

```
thumb.top 
==

```

I hoped that `"group.intrinsicHeight == preamble.bottom !medium"` would yeild

```
group.intrinsicHeight
==
preamble.bottom
!medium

```

but only get the following

```
group.intrinsicHeight
==

```

I suspect the issue is something to do with the `(.*?)` group. I think this is known as a reluctant quantifier. Is it even supported by Javascript? If not, is there a workaround? Any help greatly appreciated.