Ich bin nach einem regulären Ausdruck, der einen Prozentsatz von 0 100 validiert und zwei Dezimalstellen erlaubt.
Weiß jemand, wie man das macht oder wie man eine gute Website kennt, die ein Beispiel für übliche reguläre Ausdrücke hat, die für die clientseitige Validierung in Javascript verwendet werden?
@Tom - Danke für die Fragen. Idealerweise würde es keine führenden Nullen oder andere nachlaufende Zeichen geben.
Danke an alle, die bisher geantwortet haben. Ich habe die Kommentare wirklich interessant gefunden.
Anstatt reguläre Ausdrücke dafür zu verwenden, würde ich einfach die eingegebene Zahl des Benutzers in einen Fließkommawert umwandeln und dann nach dem gewünschten Bereich (0 bis 100) suchen. Der Versuch einer numerischen Bereichsüberprüfung mit regulären Ausdrücken ist fast immer das falsche Werkzeug für den Job.
%Vor%Ich schlage das vor:
%Vor%Es passt 100, 100.0 und 100.00 mit diesem Teil
%Vor%und Zahlen wie 0, 15, 99, 3.1, 21.67 mit
%Vor%Beachten Sie, welche führenden Nullen verboten sind, aber nachfolgende Nullen sind erlaubt (obwohl nicht mehr als zwei Dezimalstellen).
Das erinnert mich an einen alten Blogeintrag Von Alex Papadimoulis (von Der tägliche WTF Ruhm), wo er die folgende Geschichte erzählt:
"Ein Kunde hat mich gebeten, ein individuelles Regalsystem zu bauen und zu installieren. Ich bin an dem Punkt, an dem ich es nageln muss, aber ich bin mir nicht sicher, was ich zum Einschlagen der Nägel verwenden soll alter Schuh oder eine Glasflasche? "
Wie würden Sie die Frage beantworten?
Kommt drauf an. Wenn Sie versuchen, einen kleinen (20 Pfund) Nagel in etwas wie Trockenbau zu schlagen, werden Sie es viel einfacher finden, die Flasche zu benutzen, besonders wenn der Schuh schmutzig ist. Wenn Sie jedoch versuchen, einen schweren Nagel in etwas Holz zu treiben, gehen Sie mit dem Schuh: die Flasche mit Bruch in Ihrer Hand.
Es gibt etwas grundlegend falsches mit der Art, wie Sie bauen; Sie müssen echte Werkzeuge verwenden. Ja, es kann eine Reise in die Toolbox (oder sogar in den Baumarkt) beinhalten, aber wenn Sie es richtig machen, sparen Sie viel Zeit, Geld und Ärger über den Lebenszyklus Ihres Produkts. Sie müssen aufhören, Dinge für Geld zu bauen, bis Sie die Grundlagen der Konstruktion verstehen.
Dies ist eine solche Frage, bei der die meisten Leute es als Herausforderung sehen, den richtigen regulären Ausdruck zur Lösung des Problems zu finden. Es wäre jedoch viel besser zu sagen, dass die Verwendung von regulären Ausdrücken das falsche Werkzeug für den Job verwendet .
Das Problem bei der Verwendung von Regex zur Validierung numerischer Bereiche besteht darin, dass es schwierig ist, Änderungen vorzunehmen, wenn sich die Anforderungen für den zulässigen Bereich ändern. Heute besteht die Anforderung darin, Zahlen zwischen 0 und 100 zu validieren, und es ist möglich, eine Regex für das zu schreiben, was Ihre Augen nicht bluten lässt. Aber nächste Woche kann sich die Anforderung ändern, so dass Werte zwischen 0 und 315 zulässig sind. Viel Glück beim Ändern Ihrer Regex.
Die Lösung von Greg Hewgill ist wahrscheinlich besser - obwohl "99fxx" als "99" bestätigt wird. Aber angesichts der Umstände könnte das in Ordnung sein.
(100|[0-9]{1,2})(\.[0-9]{1,2})?
Das sollte die Regex sein, die Sie wollen. Ich empfehle Ihnen, Mastering Regular Expression zu lesen und RegexBuddy oder The Regex Coach herunterzuladen.
@mlarsen: Ist das nicht ein Regex hier wird die Arbeit nicht besser machen.
Denken Sie daran, dass die Validierung sowohl auf Client- als auch auf Serverseite erfolgen muss, also etwa wie folgt:
%Vor%wäre eine sprachübergreifende Überprüfung. Achten Sie jedoch darauf, die Eingabedauer mit der Ausgabeübereinstimmungslänge zu überprüfen.
Dies würde übereinstimmen:
100,00
optional "1-9" gefolgt von einer Ziffer (dies bildet den int-Teil), optional gefolgt von einem Punkt und zwei Ziffern
Von dem, was ich sehe, funktioniert das Beispiel von Greg Hewgill nicht so gut, weil parseFloat ('15x') einfach 15 zurückgibt, was der Bedingung 0 & lt; x & lt; 100 entsprechen würde. Verwenden Sie parseFloat ist eindeutig falsch, weil es den Prozentwert nicht validiert, sondern versucht, eine Validierung zu erzwingen. Einige Leute hier beschweren sich über führende Nullen und einige ignorieren nachfolgende ungültige Zeichen. Vielleicht sollte der Autor der Frage es bearbeiten und klar machen, was er braucht.
Ich empfehle das, wenn Sie nicht ausschließlich für Englisch sprechende Benutzer entwickeln:
%Vor%Sie können einfach die 10 durch eine 2 ersetzen, um zwei Dezimalstellen zu erhalten.
Mein Beispiel wird übereinstimmen:
%Vor%Natürlich ist es schwieriger, die Ausgabe zu erzeugen, aber so etwas wird auch funktionieren (Java-Code):
%Vor%Tags und Links javascript regex