我試圖調試一個排序問題與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