A raíz de mi post anterior sobre 5 expresiones regulares que todo programador web debería conocer, me ha parecido interesante añadir unas cuantas más que, aunque quizás no sean nada del otro mundo, me parecen muy útiles y seguro que ayudan a más de uno.
Validar un número entero
Esta es realmente sencilla y muy muy útil, sobre todo si trabajar con cadenas de texto o lenguajes de programación no tipados. En PHP hay por ejemplo funciones como is_number() que hacen una función parecida.
Comprueba si todos caracteres del string son dígitos.
/^\d+$/
O, de forma equivalente:
/^[0-9]+$/
Atentos que la cadena vacía no pasa esta expresión, es necesario que haya al menos un dígito. Si quieres permitir que esté vacío, entonces cambia el + por *.
Validar un número decimal
Esta es una extensión la anterior. Acepta tanto número positivos como negativos y que el separador de decimales sea coma o punto:
/^-?[0-9]+([,\.][0-9]*)?$/
Validar opciones de entrada
Aunque no siempre, viene muy bien cuando tenemos unos cuantos parámetros y no queremos usar if($a == ‘a’ || $a == ‘b’ || $a == ‘c’) y todo lo largo que queráis el if.
La siguiente expresión comprueba si la variable es a, b, c, otro o mas:
/^(a|b|c|otro|mas)$/
En PHP, con un preg_match, la papeleta está solucionada. Por ejemplo:
if(!preg_match('/^(a|b|c|otro|mas)$/', $a) {
// Si entra es que no hay coincidencias
return null;
}
Tras estas líneas, $a es sólo una de las opciones indicada y si no, habrá retornado null.
Extraer cierta parte de un texto
Partiendo de que tenemos una cadena de caracteres en $text y sabemos que en alguna parte suya cumple que tiene una cadena de texto (por ejemplo ‘jugador’) y un número separados por un guión (es decir, por ejemplo ‘jugador-15’) y queremos conocer ese número porque es su identificador. Podemos usar:
preg_match('/player-(\d+)/', $text, $matches);
$id = $matches[1];
Tras estas líneas, en $id tenemos nuestro número.
Esta expresión se puede extender todavía un poco más si el texto a buscar lo tenemos en una variable, por ejemplo $buscar.
En PHP podemos hacer:
preg_match('/' . $buscar . '-(\d+)/', $text, $matches);
$id = $matches[1];
Si estás usando javascript, el equivalente para este último caso es:
var buscar = 'player';
var m = texto.match(new RegExp(buscar + '-(\d+)'));
var id = m[1];
Y hasta aquí da mi memoria de momento. Cuando me acuerde de alguna otra, ya las iremos posteando.
Y cómo haría para que no me permita el ingreso de un numero seguido sólo por punto o coma por ejemplo:
15.
233,
Hola Jorge,
Yo forzaría que hubiese más números:
[0-9]+[,\.][0-9]+
Es decir, se leería: un número de al menos un dígito, luego coma o punto y luego un número de al menos un dígito.
Espero que te sirva
Hola disculpa como se podría hacer una expresión para que no me acepte los 0 y -1 SOLO pueda aceptar cantidades así ejemplo: 1 o un 10
Hola Jorge, si te entiendo bien, quieres que sólo se aceptan números positivos y no se incluya el cero. Si es así, con algo del estilo /^[^0][0-9]*$/, es decir, que el primer dígito no sea cero, lo que excluye el menos también y luego la cantidad de dígitos que hagan falta.
No obstante, una buena solución sería convertir la cadena a entero y a partir de aquí, hacer la comprobación > 0
Si es lo que quiero Tatai aun no encontrado una buena solucion eh logrado que no acepte los 0 ni los -1. Pero solo que no eh podido hacer que me acepte despues del primer digito el 0 es decir el 10, 20 etc.
Si cuentan con alguna funcion en javascript o exprecion regular que me sirva les agredeceria mucho