我正在使用第三方 JS 库。它需要一些 RegExp 作为输入,用于匹配字符串的各个部分。现在我需要在我传递的RegExp中使用lookbehind,但是在JS RegExp中没有实现lookbehind。因此,作为解决方法,我尝试从 RegExp 派生:
function SubRegExp(pattern, matchIndex) {
this.matchIndex = matchIndex;
this.prototype = new RegExp(pattern);
this.exec = function(s) {
return [ this.prototype.exec(s)[this.matchIndex] ];
}
}
我正在像这样测试它:
var re = new SubRegExp('m(.*)', 1);
console.log(re.exec("mfoo"));
console.log("mfoo".match(re));
我得到的是:
["foo"]
["o", index: 2, input: "mfoo"]
第一个输出符合预期,但我并没有真正了解第二个输出发生了什么。我究竟做错了什么?