Recientemente descubrí que un método que he estado usando para validar la entrada del usuario acepta algunos valores con los que no estoy particularmente satisfecho. Necesito que solo acepte números naturales (1
, 2
, 3
, etc.) sin caracteres que no sean dígitos.Regex para validar solo números naturales?
Mi método es el siguiente:
function is_natural($str)
{
return preg_match('/[^0-9]+$/', $str) ? false : $str;
}
Así que se supone que debe devolver false si encuentra otra cosa que un número natural entero. El problema es que acepta cadenas como "2.3"
e incluso "2.3,2.2"
¿Qué quiere decir "números naturales, pero no hay dígitos"? ¿Cómo quieres los números sin [dígitos] (http://en.wikipedia.org/wiki/Numerical_digit)? –
Esa expresión regular no coincidirá con un punto o una coma. – Koraktor
utilizo 'filter_var': http://stackoverflow.com/a/6563394/2165415 ver el puesto no –