我想创建一个String方法,该方法接受RegExp和回调,然后通过RegExp分割String,并在split中插入回调的返回值阵列。总之,它会做这样的事情:为什么语句if(!condition){console.log(condition)}显示为真
"a 1 b 2 c".method(/\d/, function ($1) { return $1 + 1; })
=> [a, 2, b, 3, c]
如果字符串不匹配正则表达式,它应该返回一个数组,像这样:
"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];
}
...
}
的执行console.log应该被称为只有当字符串不匹配reg
,右:因为我认为它不工作?但有时它会记录(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
控制台日志为true。我无法弄清楚为什么。任何帮助将不胜感激。
你能使用这个小提琴复制吗? http://jsfiddle.net/QN8MT/ – jacquard
thecoder:我不喜欢小提琴。修改了你的建议,看起来像在工作...... – kipenzam
Felix:很有趣。我已经注意到\ d和[0-9]之间的细微差别, – kipenzam