我试图调试一个排序问题与jQuery插件的tablesorter它使用下面的代码来检查数字:为什么会匹配找到一个结果,而测试在JavaScript中为正则表达式返回false?
this.isDigit = function(s,config) {
var DECIMAL = '\\' + config.decimal;
var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';
return RegExp(exp).test($.trim(s));
};
为config.decimal值“”
现在,如果s ='0',则失败,但如果您运行匹配,则RegEx会按预期正向响应。
return exp.match($.trim(s)) != null
为了返回不同的结果,这种处理方式有什么不同?
万一你想其中S是导出(最后一栏被视为文本)的HTML:
<tr class="">
<td><a href="#">Click</a></td>
<td>Annen Woods</td>
<td>131</td>
<td>20</td>
<td>5</td>
<td>3</td>
<td>12</td>
<td>6</td>
<td>50%</td>
<td>0</td>
</tr>
据我所知,测试返回一个布尔值和匹配返回一个字符串或空。
最终的问题是为什么不是此正则表达式:
return RegExp(exp).test($.trim(s));
等效于:
return exp.match($.trim(s)) != null
好的,但为什么当匹配似乎工作时测试不会返回true? – catalpa 2009-05-19 16:03:39