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.