2012-10-26 13 views

Odpowiedz

12

Zastosowanie 3 dowolnych cyfr:

^\d{2}\d{3}?$ 

Zauważ, że niektóre silniki regex zinterpretuje ? po każdym modyfikator powtarzania (nawet stałą jeden) jako ungreedy modyfikatora, który wydaje się być przyczyną problemów dla Przypadek dwóch cyfr. W przypadku wystąpienia tego używać:

^\d{2}(?:\d{3})?$ 

można przeczytać na pewnych podstawach regex w this great tutorial.

Nawiasem mówiąc, powyższe jest skutecznie równoważny (ale nieznacznie bardziej wydajne) do tego używając naprzemiennie:

^(?:\d{2}|\d{5})$ 

(. Właśnie przez wzgląd na pokazując inną koncepcję regex)

+0

-1. Pierwszy jest błędny w Javie. '?' Wskaże leniwe dopasowanie. – nhahtdh

+0

@nhahtdh, tylko jeśli '{..}' było zakresem, czy nie? –

+0

@ m.buettner: Nie wydaje mi się, że odbiegają od normalnego, gdy liczba powtórzeń jest stała, ale "?" Będzie interpretowane jako lenistwo. – nhahtdh

0
/^\A\d{2}\z$|^\A\d{5}\z$/ 

A oznacza początek wejścia i z oznaczający koniec wejścia.

Działa to dla PHP i JAVA; nie jestem pewien js lub perl.

Powiązane problemy