I came across a strange behaviour when doing some regular expressions in JavaScript today (Firefox 3 on Windows Vista).

```
var str = "format_%A";
var format = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(str);

console.log(format);    // ["format_%A", "%A"]
console.log(format[0]); // "format_undefined"
console.log(format[1]); // Undefined

```

There's nothing wrong with the regular expression. As you can see, it has matched the correct part in the first `console.log` call.

Internet Explorer 7 and Chrome both behave as expected: `format[1]` returns "%A" *(well, Internet Explorer 7 doing something right was a bit unexpected...)*

Is this a bug in Firefox, or some "feature" I don't know about?