Wiem, że może to być oczywiste dla większości ludzi, którzy często używają RegEx, ale w przypadku, gdy jacyś czytelnicy są nowicjuszami w RegEx, pomyślałem, że powinienem zwrócić uwagę na obserwację, która była pomocna w jednym z moich projektów.
W poprzedniej odpowiedzi od @kennytm:
^\d{5}(?:[-\s]\d{4})?$
…? = Wzorzec przed nim jest opcjonalny (dla warunku 1)
Jeśli chcesz zezwolić na standardowe 5-cyfrowe i +4 kody pocztowe, jest to świetny przykład.
Aby dopasować tylko kody pocztowe w amerykańskim formacie „Zip + 4”, tak jak potrzebowałem (tylko warunki 2 i 3), po prostu usuń ostatni, ?
aby zawsze pasował do ostatniej grupy 5 znaków.
Przydatne narzędzie, które polecam do majstrowania przy RegEx, znajduje się poniżej:
https://regexr.com/
Często używam tego narzędzia, gdy znajduję RegEx, które robi coś podobnego do tego, czego potrzebuję, ale może być nieco lepiej dostosowane. Ma również sprytne menu referencyjne RegEx i interfejs informacyjny, który informuje Cię o tym, jak Twoje zmiany wpływają na dopasowania dla wprowadzonego przykładowego tekstu.
Jeśli coś jest nie tak lub przeoczyłem ważną informację, popraw mnie.
\d{5}([ \-]\d{4})?
.