Я пытался отладить проблему сортировки с помощью плагина jquery tablesorter , который использует следующий код для проверки на наличие цифр:
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
Чем отличается эта обработка для получения разных результатов?
На всякий случай, если вы хотите, чтобы HTML был получен из s (последний столбец рассматривается как текст):
<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>
Я понимаю, что test возвращает логическое значение, а match возвращает строку или ноль.
Главный вопрос - почему не для этого регулярного выражения:
return RegExp(exp).test($.trim(s));
эквивалентно:
return exp.match($.trim(s)) != null