validação jogo campo de data Preg
-
19-09-2019 - |
Pergunta
Eu tento "validar" um campo de data. Eu só quero permitir que, caracteres numéricos e -. Caráter
$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"
}
Se eu tentar procurar por "1960", em seguida, OK. Se eu tentar procurar "asdfg", então NÃO OK. Mas se eu procurar por "1960 /", então a saída é OK. Eu não entendo o porquê.
Você poderia me ajudar a modificar para verificar se o usuário apenas "0-9" e "-". Caracteres preencher o campo
Obrigado
Solução
você precisa "âncora" a sua expressão, ou seja, início da inserção de corda ^ e no final da string $ marcadores.
preg_match('/^[0-9-]+$/', $born_date);
No entanto, preg_match não é uma forma de datas em Validar. Por exemplo, o vai acima aceitar "99999999" etc
Outras dicas
de user187291 regex irá corresponder caracteres de data única, que é o que você quer. Uma maneira rápida para validar uma data é a de tentar convertê-lo para um timestamp via strtotime()
:
if (strtotime($date_str)!==false) {
// The date is valid.
}
$char_re_good = "/^[0-9-]+$/";
Faça uma tentativa