Regex für eine Zahl 1-31 Ruby
Ich versuche, eine beliebige Anzahl 1-31 (einschließlich).
Dies ist der nächste, den ich habe:
([1-9]|[12]\d|3[01])
Aber zahlen wie 324 akzeptiert werden.
Jede chance, es gibt eine regex gibt, die erfassen können, nur 1-31?
- Dein regex ist wirklich nicht richtig zu schließen, aber das problem ist, dass es mit dem '3' in '324' und Ihren test bestanden. Wenn Sie fügen Sie in den start-string und Ende von string-Marker, ich denke, Sie werden haben, was Sie wollen:
\A([1-9]|[12]\d|3[01])\z
- Sie könnte einfach die token-Wort-Grenze um deinen regex, wenn es einen Teil einer Zeichenkette: \b([1-9]|[12]\d|3[01])\b Oder verwenden Sie jKillian Vorschlag, wenn es die gesamte Zeichenfolge.
- genial, vielen Dank an alle. tolle Anregungen! scheint, es gibt mehrere Lösungen zu arbeiten.
- Regex sind nicht gute Hilfsmittel für die Prüfung, ob die Werte mit einer bestimmten Reichweite. Sie führen zu unhandlich Muster. Stattdessen verwenden Sie zum extrahieren der Wert dann vergleichen Sie in eine Reihe wie
1..31
. - Bin ich etwas fehlt? Alle Antworten mit nur einem regex haben Anker, um sicherzustellen, dass eine gesamte Linie ist eine Darstellung der Anzahl, im Gegensatz zum extrahieren einer Zahl aus einem beliebigen string. Sie sagte nichts darüber, dass die in Ihrer Frage. Bitte klären Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende regex erfüllt Ihre Bedingung:
Demo hier
"0"[/^([0-9]|[12][0-9]|3[01])$/] => "0"
, bitte so ändern, dass die erste null in eine. Auch, warum der Anker? Was ist mit, "Es ist jetzt 25 Tage und zählen."?Verwenden, um einen Numerischen Vergleich Statt
Je nachdem, was Sie wirklich versuchen, zu tun, oder kommunizieren mit deinem code, kann es mehr Sinn machen, einfach entpacken Sie alle ganzen zahlen und ablehnen, die außerhalb Ihrer gewünschten Auswahl. Zum Beispiel:
str
nur um zu zeigenscan
funktioniert für diese (undstr.split
nicht). Eine stilistische Variante:.select { |i| (1..31).cover?(i) }
.Versuchen Sie dieses:
/^([0-9]|1[0-9]|2[0-9]|3[01])$/
Hier ein Beispiel:
Hier ist einer: