Регулярное выражение для даты неправильное регулярное выражение - PullRequest
0 голосов
/ 27 апреля 2020

у меня есть этот формат для дат гггг-ММ-дд

и генерация следующего значения

 /^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$

Это генерируется в java с использованием следующего, где я заменяю формат на регулярное выражение

String format = getDisplayDateFormat( formatType );

        format = format.replaceAll("\\-","\\\\-");
        format = format.replaceAll("y","[0-9]");
        format = format.replaceAll("M","[0-9]");
        format = format.replaceAll("d","[0-9]");

        return "^" + format + "$";

Если я запускаю это через валидатор регулярных выражений, это нормально, но chrome дает следующую ошибку

Pattern attribute value ^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$/: Invalid escape

изменить, чтобы включить html

<input type="text" value="2020-04-21" placeholder="yyyy-mm-dd" pattern="^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$" data-minimum-value="2020-08-10" data-maximum-value="2020-08-13"id="F112407" maxlength="10" data-date-format="YYYY-MM-DD" >

1 Ответ

0 голосов
/ 27 апреля 2020

См. Также: Значение атрибута шаблона не является допустимым регулярным выражением

Допустимый шаблон будет выглядеть следующим образом: ^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$

РЕДАКТИРОВАТЬ: Однако, есть больше дурака доказательства способов проверки дат. Рассмотрите возможность использования функции проверки даты, например: Как проверить дату в формате «мм / дд / гггг» в JavaScript? Или использовать средство выбора даты, чтобы вообще ограничить ввод.

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