2012-10-26 15 views

Antwort

12

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)

+0

-1. Die erste ist falsch in Java. Das '' '- Symbol zeigt an, dass eine Übereinstimmung gefunden wurde. – nhahtdh

+0

@nhahtdh, nur wenn der '{..}' ein Bereich war, oder nicht? –

+0

@ 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

0
/^\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.

Verwandte Themen