13 Stimmen

RegEx Numerische Prüfung im Bereich?

Ich bin neu bei StackOverflow, also lassen Sie mich bitte wissen, ob es einen besseren Weg gibt, die folgende Frage zu stellen.

Ich muss einen regulären Ausdruck erstellen, der erkennt, ob ein Feld in der Datenbank numerisch ist, und wenn es numerisch ist, fällt es in einen gültigen Bereich (d. h. 1-50). Ich habe versucht [1-50] was funktioniert, außer in den Fällen, in denen einer einstelligen Zahl eine 0 vorangestellt wird (z. B. 06). 06 sollte immer noch als gültige Zahl betrachtet werden, da ich sie später in eine Zahl umwandeln kann.

Ich bin Ihnen wirklich dankbar für Ihre Hilfe! Ich versuche, mehr über reguläre Ausdrücke zu lernen, und habe alles gelernt, was ich kann von: www.regular-expressions.info . Wenn ihr Empfehlungen für andere Websites habt, auf denen man sich über dieses Thema informieren kann, wäre ich euch dankbar!

17voto

JaredPar Punkte 699699

Versuchen Sie dies

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

Die Idee dieser Regex ist es, das Problem in verschiedene Fälle zu unterteilen

  • 0?[1-9] kümmert sich um die einstellige Groß- und Kleinschreibung und ermöglicht eine optionale vorangestellte 0
  • [1-4][0-9] ist für alle Zahlen von 10 bis 49 zuständig. Dies ermöglicht auch eine vorangestellte 0 bei einer einzelnen Ziffer
  • 50 kümmert sich um 50

5voto

Doug Punkte 8420

Reguläre Ausdrücke funktionieren für Zeichen (in diesem Fall Ziffern), nicht für Zahlen. Sie müssen für jede Anzahl von Ziffern in Ihrem Muster ein eigenes Muster erstellen und diese mit | (dem OR-Operator) kombinieren, wie in den anderen Antworten vorgeschlagen wurde. Sie können aber auch nur prüfen, ob der Text numerisch ist, indem Sie einen regulären Ausdruck verwenden (wie [0-9]+ ) und dann in eine Ganzzahl konvertiert und überprüft, ob die Ganzzahl innerhalb des Bereichs liegt.

2voto

S.Lott Punkte 371691

Mit regulären Ausdrücken kann man nicht so einfach eine Bereichsprüfung durchführen. Sie können - mit etwas Arbeit - ein Muster entwickeln, das einen numerischen Bereich erkennt, aber es ist in der Regel recht komplex und lässt sich nur schwer für einen leicht abweichenden Bereich ändern.

Es ist besser, dies in zwei Teile aufzuteilen.

  1. Erkennen Sie das Zahlenmuster ( ^\d+$ ).

  2. Überprüfen Sie den Bereich dieser Nummer in einem Anwendungsprogramm.

1voto

Brijesh Mishra Punkte 2708

^0?[1-50]{1,2}$

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