Проверка поля даты предварительного совпадения

StackOverflow https://stackoverflow.com/questions/1909954

  •  19-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь «проверить» поле даты.Я хочу разрешить только числовые символы и символы.

 $born_date=$_POST['date'];
 $goodchars = array("1","2","3","4","5","6","7","8","9","0","-");
 $char_re_good = '/['.preg_quote(join('', $goodchars), '/').']/';
       if (!(preg_match($char_re_good, $born_date))) {
            echo "not ok, contain INVALID chars"
       }else{
            echo "ok, contain valid chars"
       }

Если я попытаюсь найти «1960», то ОК.Если я попытаюсь найти «asdfg», то НЕ ОК.Но если я ищу «1960/», то результат будет в порядке.Я не понимаю, почему.

Не могли бы вы помочь мне изменить, чтобы проверить, заполняет ли пользователь только символы «0-9» и «-».

Спасибо

Это было полезно?

Решение

вам нужно «закрепить» свое выражение лица, т.е.вставьте маркеры начала строки ^ и конца строки $.

 preg_match('/^[0-9-]+$/', $born_date);

однако preg_match не является способом проверки дат.Например, приведенное выше будет принимать «99999999» и т. д.

Другие советы

регулярное выражение пользователя 187291 будет соответствовать только символам даты, и это то, что вам нужно.Быстрый способ проверить дату — попытаться преобразовать ее в метку времени с помощью strtotime():

if (strtotime($date_str)!==false) {
  // The date is valid.
}
$char_re_good = "/^[0-9-]+$/";

Попробуйте это

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top