Pregunta

Trato de "validar" un campo de fecha. Sólo quiero permitir, caracteres numéricos y -. Carácter

 $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"
       }

Si trato de buscar "1960" y luego en Aceptar. Si trato de buscar "asdfg", entonces NO OK. Pero si busco "1960 /", entonces la salida es OK. No entiendo por qué.

¿Podría ayudarme a modificar para comprobar si el usuario solamente "0-9" y "-". Caracteres llenar el campo

Gracias

¿Fue útil?

Solución

que necesita para "anclar" su expresión, es decir, insertar inicio de la cadena ^ $ y al final de los marcadores de cuerda.

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

Sin embargo, preg_match no es una manera de validar fechas. Por ejemplo, el superior para aprobar "99999999", etc.

Otros consejos

de user187291 expresiones regulares coincidirá con la fecha sólo caracteres, que es lo que desea. Una forma rápida para validar una fecha es tratar de convertirla en una marca de tiempo a través de strtotime() :

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

Inténtelo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top