<分区>
我想创建一个 String 方法,它接受一个 RegExp 和一个回调,然后通过 RegExp 拆分 String,并将回调的返回插入拆分数组。简而言之,它会做这样的事情:
"a 1 b 2 c".method(/\d/, function ($1) { return $1 + 1; })
=> [a, 2, b, 3, c]
如果字符串与 RegExp 不匹配,它应该返回一个数组,如下所示:
"a b c d e".method(/\d/, function ($1) { return $1 + 1; })
=> ["a b c d e"]
我写了这段代码,但它并没有像我想的那样工作:
String.prototype.preserveSplitReg = function(reg, func) {
var rtn = [],
that = this.toString();
if (!reg.test(that)) {
console.log(reg, that, reg.test(that));
return [that];
}
...
}
只有当字符串不匹配 reg
时,才应该调用 console.log,对吗?但有时它会记录 (reg, that, true)
。那个麻烦的 String 和 reg
是:
"See <url>http://www.w3.org/TR/html5-diff/</url> for changed elements and attributes, as well as obsolete elements and"
/<url>.*?<\/url>/g
控制台记录为真。我不知道为什么。任何帮助将不胜感激。