23 Stimmen

Wie kann ich den Bereich 1-99 mit einer Regex validieren?

Ich muss einige Benutzereingaben validieren, um sicherzustellen, dass eine eingegebene Zahl im Bereich von 1-99 einschließlich liegt. Dies müssen ganze (Integer) Werte sein

Eine vorangestellte 0 ist zulässig, aber optional

Gültige Werte

  1. 1
  2. 01
  3. 10
  4. 99
  5. 09

Ungültige Werte

  1. 0
  2. 007
  3. 100
  4. 10.5
  5. 010

Bisher habe ich die folgende Regex, die ich ausgearbeitet habe: ^0?([1-9][0-9])$

Dies erlaubt eine optionale 0 am Anfang, ist aber nicht 100% korrekt, da 1 nicht als gültig erachtet wird

Irgendwelche Verbesserungen/Vorschläge?

36voto

developmentalinsanity Punkte 5861

Aus dem Stegreif (nicht validiert)

^(0?[1-9]|[1-9][0-9])$

15voto

Alin Purcaru Punkte 41895

Hier ist es:

^(\d?[1-9]|[1-9]0)$

Das heißt, Sie erlauben entweder

  1. 1 bis 9 oder 01 bis 09, 11 bis 19, 21 bis 29, ..., 91 bis 99
  2. 10, 20, ..., 90

5voto

red-X Punkte 5040
^(([0-9][1-9])|([1-9][0-9])|[1-9])$

sollte funktionieren

5voto

Mark Thomas Punkte 36148

Warum ist Regex eine Voraussetzung? Sie ist nicht ideal für numerische Bereichsberechnungen.

Apache commons hat IntegerValidator mit dem folgenden:

isInRange(value, 1, 99)

Wenn Sie Spring, Struts, Wicket, Hibernate usw. verwenden, haben Sie außerdem bereits Zugang zu einem Bereichsvalidierer. Erfinden Sie das Rad mit regulären Ausdrücken nicht neu.

2voto

Faheem Alam Punkte 515

Ziemlich spät, aber das wird funktionieren.

^[1-9][0-9]?$

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X