Я знаю, что это может быть очевидным для большинства людей, которые часто используют RegEx, но в случае, если какие-либо читатели не знакомы с RegEx, я подумал, что должен указать на сделанное мной наблюдение, которое было полезно для одного из моих проектов.
В предыдущем ответе @kennytm:
^\d{5}(?:[-\s]\d{4})?$
...? = Шаблон перед ним необязательный (для условия 1)
Если вы хотите разрешить использование стандартных 5-значных и +4-значных почтовых индексов, это отличный пример.
Чтобы сопоставить только почтовые индексы в американском формате «Zip + 4», как мне нужно (только условия 2 и 3), просто удалите последний ?
чтобы он всегда соответствовал последней группе из 5 символов.
Полезный инструмент, который я рекомендую для работы с RegEx, приведен ниже:
https://regexr.com/
Я часто использую этот инструмент, когда нахожу RegEx, который делает что-то похожее на то, что мне нужно, но может быть настроен немного лучше. Он также имеет изящное справочное меню RegEx и информативный интерфейс, который позволяет вам знать, как ваши изменения влияют на совпадения с образцом текста, который вы ввели.
Если я ошибся или пропустил важную информацию, поправьте меня.
\d{5}([ \-]\d{4})?
.