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.
InformationsquelleAutor user3007294 | 2014-10-12
Schreibe einen Kommentar