Regex - я что-то не так сделал? - PullRequest
2 голосов
/ 03 ноября 2008

Это javascript, но практически идентичное регулярное выражение также не работает в PHP, поэтому я не думаю, что это зависит от языка

var r = new RegExp(
    "^(:19|20)?[0-9][0-9]"            // optional 19/20 start followed by 2 numbers
    + "-"                             // a hyphen
    + "(:0?[1-9]|1[0-2])"             // optional 0 followed by 1-9, or 10, 11, 12
    + "-"                             // a hyphen
    + "(:3[01]|[12][0-9]|0?[1-9])$"   // you get the idea.
);
r.test("2008-07-01");                // == false

Что, черт возьми, мне не хватает?

Ответы [ 2 ]

11 голосов
/ 03 ноября 2008

Я думаю, что ваши блоки не должны быть, например, (?:19|20) вместо (:19|20)

2 голосов
/ 03 ноября 2008

Корректное; ваше регулярное выражение будет работать с "?:"

"?" при использовании префикса указывает, что вы собираетесь что-то делать с захватом. Либо не захватывать блок (":"), захватывать вперед ("="), позади ("<=") и т. Д. </p>

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