Ich habe versucht, ein Sortier Problem mit der jQuery-Plugin tablesorter zu debuggen, die den folgenden Code verwendet für die Ziffern zu überprüfen: ‚‘Warum findet eine Übereinstimmung ein Ergebnis, während test für einen regulären Ausdruck in JavaScript den Wert false zurückgibt?
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));
};
der Wert für config.decimal ist
Jetzt, wenn s = '0', schlägt dies fehl, aber wenn Sie stattdessen Übereinstimmung ausführen, scheint die RegEx wie erwartet positiv zu reagieren.
return exp.match($.trim(s)) != null
Wie ist diese Verarbeitung anders, um unterschiedliche Ergebnisse zu erhalten?
Nur für den Fall wollten Sie den HTML-Code, wo s abgeleitet (Die letzte Spalte wird als Text angezeigt):
<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>
Ich verstehe, dass Test einen Booleschen Wert zurückgibt und Spiel einen String oder null zurückgibt.
ist die entscheidende Frage, warum nicht für diesen regulären Ausdruck ist:
return RegExp(exp).test($.trim(s));
entspricht:
return exp.match($.trim(s)) != null
OK, aber warum würde der Test nicht wahr werden, wenn das Spiel zu funktionieren scheint? – catalpa