我今天在 JavaScript 中执行一些正则表达式时遇到了一个奇怪的行为(Windows Vista 上的 Firefox 3)。
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
正则表达式没有任何问题。如您所见,它在第一次console.log
调用中匹配了正确的部分。
Internet Explorer 7 和 Chrome 都按预期运行:format[1]
返回“%A” (嗯,Internet Explorer 7 做对了有点出乎意料...)
这是 Firefox 中的错误,还是我不知道的某些“功能”?