Как проверить шаблон даты, используя HTML5 - PullRequest
0 голосов
/ 02 января 2019

Здравствуйте, я пытаюсь проверить шаблоны даты на моем флажке.Мои шаблоны следующие: yyyy или m-yyyy или d-m-yyyy

Если ввод дается в вышеуказанном формате, то он должен быть разрешен, в противном случае форма не должна быть отправлена.После того, как вышеупомянутые шаблоны вставлены, мне нужно сравнить их с моим полем даты базы данных MYSQL.Например, если введен год, то соответствует только указанный год.Если месяц и год добавляются, то месяц и год сравниваются только в базе данных.

Я попробовал следующий шаблон, но он соответствует только полному.Мне нужно соответствовать всем случаям

<input type="text" name="input" placeholder="YYYY-MM-DD" required 
pattern="(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))" 
title="Enter a date in this format YYYY-MM-DD"/>

Как мне достичь вышеуказанного?

Ответы [ 2 ]

0 голосов
/ 03 января 2019
  1. Используйте уже обсужденное регулярное выражение, чтобы разбить входящие данные на 1, 2 или 3 поля, скажем, $ d, $ m, $ y, некоторые из которых имеют значение NULL.

  2. Построить запрос с подходящим предложением WHERE на основе данных:

Что-то вроде этого в PHP, при условии, что dt - это столбец, который проверяется:

$wheres = array();
$wheres[] = "'$y' = LEFT(dt, 4)";             -- test the Year
if (isset($m))
    $wheres[] = "0+'$m' = 0+MID(dt, 6, 2)";   -- and month (if given)
if (isset($d))
    $wheres[] = "0+'$d' = 0+MID(dt, 9, 2)";

$where_clause = implode(" AND ", $wheres);    -- put the tests together
$sql = "SELECT ... WHERE ( $where_clause ) ...";

Примечания: 0+ - для избежания сравнения строк, скажем, месяц = ​​'3' против '03'.

0 голосов
/ 02 января 2019

Вы можете использовать этот шаблон:

((0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4})|[0-9]{4}|(0[1-9]|1[012]).[0-9]{4}

Он состоит из 3 частей:

  • (0 [1-9] | 1 [0-9] | 2[0-9] | 3 [01]). (0 [1-9] | 1 [012]). [0-9] {4}

Который проверяет формат DD.MM.YYYY

  • [0-9] {4}

, который проверяет формат YYYY

  • (0 [1-9] | 1 [012]). [0-9] {4}

, который проверяет формат MM-YYY

input {
  width: 100%;
}
<form action="">
  <input type="text" name="input" placeholder="YYYY or MM-YYYY or DD-MM-YYYY" required pattern="((0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4})|[0-9]{4}|(0[1-9]|1[012]).[0-9]{4}" />
  <button type="submit">test</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...