2014-01-29 39 views
10

我想创建一个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。我无法弄清楚为什么。任何帮助将不胜感激。

+0

你能使用这个小提琴复制吗? http://jsfiddle.net/QN8MT/ – jacquard

+0

thecoder:我不喜欢小提琴。修改了你的建议,看起来像在工作...... – kipenzam

+0

Felix:很有趣。我已经注意到\ d和[0-9]之间的细微差别, – kipenzam

回答

相关问题