Шаблон регулярного выражения для формата даты 1-й месяц / месяц гггг и месяц / месяц, 1 год - PullRequest
0 голосов
/ 05 октября 2019

У меня есть шаблон регулярных выражений для следующих форматов дат, но они не работают должным образом

1-й месяц / месяц гггг (который должен соответствовать дате типа 2 апреля 1785,1 апреля 1999 года 3 апреля 2000,4 годаЯнварь 1999)

месяц / месяц, 1, гггг (что должно соответствовать дате типа 2 ноября 2000 г., 4 ноября 2000 г.)

1-й месяц / месяц гггг - \s?(?:0?[1-9]|[1,2][0-9]|3[0-1])(?:nd|rd|th|st)?(?:[\s|,|]?\s?)(?:[Jj]an(?:uary)?|[Ff]eb(?:ruary)?|[Mm]ar(?:ch)?|[Aa]pr(?:il)?|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ug(?:ust)?|[Ss]ept(?:ember)?|[Oo]ct(?:ober)?|[Nn]ov(?:ember)?|[Dd]ec(?:ember)?)\s\d{4}

пн / месяц, 1, гггг - \s?(?:[Jj]an(?:uary)?|[Ff]eb(?:ruary)?|[Mm]ar(?:ch)?|[Aa]pr(?:il)?|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ug(?:ust)?|[Ss]ept(?:ember)?|[Oo]ct(?:ober)?|[Nn]ov(?:ember)?|[Dd]ec(?:ember)?)(?:[\s|,]?\s?)(?:0?[1-9]|[1,2][0-9]|3[0-1])(?:[\s|,]?\s?)\s\d{4}

Оба формата принимают более 4 цифр в год, говорят, что я могу дать 2 ноября 200000000, и это совпадение успешно, оно должно принимать только4 цифры

1 Ответ

0 голосов
/ 05 октября 2019

Попробуйте добавить \b в конце обоих ваших регулярных выражений. Это заставляет дату прерываться на «границе слова», то есть если у вас больше четырех цифр, регулярное выражение не будет совпадать.

  • ab\d{4} будет соответствовать ab1234 и будет "соответствовать" ab123456, вплоть до 4 - я предполагаю, что вы хотите, чтобы этот второй случай потерпел неудачу, потому что он плохо отформатирован, иимеет слишком много чисел.
  • ab\d{4}\b НЕ будет соответствовать ab123456, но будет соответствовать ab1234.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...