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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top