Wie schreibe ich einen regulären Ausdruck, der nur Zahlen mit 2 oder 5 Ziffern übereinstimmen kann?Regulärer Ausdruck für 2 oder 5 Ziffern
Ich habe dies bisher aber es passt zu jeder Zahl mit 2 bis 5 Ziffern.
^\d{2,5}$
Wie schreibe ich einen regulären Ausdruck, der nur Zahlen mit 2 oder 5 Ziffern übereinstimmen kann?Regulärer Ausdruck für 2 oder 5 Ziffern
Ich habe dies bisher aber es passt zu jeder Zahl mit 2 bis 5 Ziffern.
^\d{2,5}$
Verwendung 3 optional Ziffern:
^\d{2}\d{3}?$
Beachten Sie, dass einige regex Motoren die ?
nach jeder Wiederholung Modifikator (auch eine feste eins) als ungreedy Modifikator, der für die Probleme zu verursachen scheint interpretieren Fall von zwei Ziffern. Wenn Sie diese Erfahrung haben, verwenden Sie:
^\d{2}(?:\d{3})?$
Sie können in this great tutorial auf einigen regex Grundlagen nachlesen.
By the way, die oben effektiv gleichwertig ist (aber effizienter marginal) auf diese eine mit Wechsel:
^(?:\d{2}|\d{5})$
(. Nur um Ihnen eine andere Regex Konzept zeigt)
/^\A\d{2}\z$|^\A\d{5}\z$/
A
Bedeutung Start des Eingangs und z
Bedeutung Ende des Eingangs.
Dies funktioniert für PHP und JAVA; nicht sicher über js oder perl.
-1. Die erste ist falsch in Java. Das '' '- Symbol zeigt an, dass eine Übereinstimmung gefunden wurde. – nhahtdh
@nhahtdh, nur wenn der '{..}' ein Bereich war, oder nicht? –
@ m.buettner: Ich denke nicht, dass es anders ist als normal, wenn die Anzahl der Wiederholungen festgelegt ist, aber das '?' Wird als Faulheit interpretiert. – nhahtdh