Я хочу создать метод String, который принимает RegExp и обратный вызов, а затем разбивает String на RegExp и вставляет обратный вызов в split array. Короче говоря, он сделал бы что-то вроде этого:
"a 1 b 2 c".method(/\d/, function ($1) { return $1 + 1; })
=> [a, 2, b, 3, c]
Если String не соответствует 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];
}
...
}
Консоль .log следует вызывать ТОЛЬКО, когда строка не соответствует reg
, правильно? Но иногда он регистрирует (reg, that, true)
. Эта сложная строка и 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
консольные журналы истинны. Я не могу понять, почему. Любая помощь будет высоко оценена.