Regex принимает пустые значения - PullRequest
0 голосов
/ 26 февраля 2019

Я делаю регулярное выражение для формата даты ММ / ДД / ГГГГ.

    String regex = "^(0[1-9]||1[0-2])/"
                + "([0-2][0-9]||3[0-1]||[1-9])/"
                + "([0-9][0-9][0-9][0-9]||[0-9][0-9][0-9]||[0-9][0-9]||[0-9])$";

Это работает нормально, но если я ввожу // или 1/12 /, оно принимает ввод.

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Попробуйте ^(0[1-9]|1[0-2])\/([1-2][0-9]|3[0-1]|0[1-9])\/(\d{4})$ в качестве строки регулярного выражения.Вы немного испортили дневную часть.Я также сбежал от /.Он должен работать с года 0000 по 9999.

Я бы порекомендовал попытаться построить выражение в меньших битах (например, сначала «ММ», затем «ДД», затем «ГГГГ», затем вставлять косые черты).) при использовании тестера регулярных выражений (например, этот ).

0 голосов
/ 26 февраля 2019

Это будет хорошо работать, если вы строго следуете ММ / ДД / ГГГГ

String regex = "^(0[1-9]{1}||1[0-2]{1}){1}/([0-2]{1}[0-9]{1}||3[0-1]{1}||[1-9]{2}){1}/([0-9]{4}){1}$";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...