PHP регулярные выражения необязательные несоответствующие группы? - PullRequest
1 голос
/ 21 июля 2011

Я пытаюсь сделать регулярное выражение даты, которое допускает годы с 1900 по 2099, с опциональными 19 или 20.

Я почти на месте, но я не могу найти способ разрешить 19 или 20 дополнительных частей.Вот что у меня есть:

(?:20)(?:19)?[0-9][0-9]

Результаты тестирования:

String    preg_match     is this ok? 
======    ==========     ===========
55         yes             yes
1955       yes             yes
2055       yes             yes
201955     yes             no

Может кто-нибудь помочь?

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Это сделает это:

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

Там написано:

^ = Начало строки

(?: 19 | 20)? = Совпадение 19 или 20 без захвата, ноль или один раз

\ d {2} = 2 десятичных знака

$ = конец строки

1 голос
/ 21 июля 2011
((20)|(19))? 

труба означает "ИЛИ", и они являются необязательными из-за знака вопроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...