Jak napisać wyrażenie regularne, które może pasować tylko do cyfr z 2 lub 5 cyframi?Wyrażenie regularne dla 2 lub 5 cyfr
Mam to do tej pory, ale pasuje do dowolnej liczby z 2 do 5 cyfr.
^\d{2,5}$
Jak napisać wyrażenie regularne, które może pasować tylko do cyfr z 2 lub 5 cyframi?Wyrażenie regularne dla 2 lub 5 cyfr
Mam to do tej pory, ale pasuje do dowolnej liczby z 2 do 5 cyfr.
^\d{2,5}$
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)
/^\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.
-1. Pierwszy jest błędny w Javie. '?' Wskaże leniwe dopasowanie. – nhahtdh
@nhahtdh, tylko jeśli '{..}' było zakresem, czy nie? –
@ m.buettner: Nie wydaje mi się, że odbiegają od normalnego, gdy liczba powtórzeń jest stała, ale "?" Będzie interpretowane jako lenistwo. – nhahtdh