Expresiones regularesLas principales funciones para comparar una cadena con un patrón son ereg($patron, $cadena) y eregi($patron, $cadena). La diferencia entre ellas es que ereg() distingue entre mayúsculas y minúsculas y eregi() no. Estas funciones comprueban si la cadena cumple el patrón y devuelven el valor 1 (verdadero) o 0 (falso). Los argumentos de las funciones pueden ser cadenas o variables que contengan cadenas. Si el patrón es la cadena vacía, las funciones devuelven error.
| <?php $cadena1 = "1234567"; $cadena2 = "abcdefg"; $patron = "^[[:digit:]]+$"; if (eregi($patron, $cadena1) print "<p>La cadena $cadena1 son sólo números.</p>"; else print "<p>La cadena $cadena1 no son sólo números.</p>"; if (eregi($patron, $cadena2) print "<p>La cadena $cadena2 son sólo números.</p>"; else print "<p>La cadena $cadena2 no son sólo números.</p>"; ?> |
La cadena 1234567 son sólo números. La cadena abcdefg no son sólo números. |
| Patrón | Significado |
|---|---|
| . | cualquier carácter |
| ^c | empezar por el carácter c |
| c$ | terminar por el carácter c |
| c+ | 1 o más caracteres c |
| c* | 0 o más caracteres c |
| c? | 0 o 1 caracteres c |
| \n | nueva línea |
| \t | tabulador |
| \ | escape, para escribir delante de caracteres especiales: ^ . [ ] % ( ) | * ? { } \ |
| (cd) | caracteres c y d agrupados |
| c|d | caracter c o d |
| c{n} | n veces el carácter c |
| c{n,} | n o más carácteres c |
| c{n,m} | desde n hasta m caracteres c |
| [a-z] | cualquier letra minúscula |
| [A-Z] | cualquier letra mayúscula |
| [0-9] | cualquier dígito |
| [cde] | cualquiera de los carácteres c, d o e |
| [c-f] | cualquier letra entre c y f (es decir, c, d, e o f) |
| [^c] | que no esté el caracter c |
| [[:alpha:]] | cualquier letra |
| [[:digit:]] | cualquier dígito |
| [[:alnum:]] | cualquier letra o dígito |
| [[:space:]] | cualquier espacio en blanco |
| [[:punct:]] | cualquier marca de puntuación |
| [[:upper:]] | cualquier letra mayúscula |
| [[:lower:]] | cualquier letra minúscula |
| Patrón | Cadena | ¿Cumple? | Comentario |
|---|---|---|---|
| abc | awbwc | No | Los caracteres tienen que estar seguidos. |
| 34abc | Sí | No importa que hayan caracteres antes... | |
| cbabcba | Sí | ... o después. | |
| a2b | g1da2b3 | Sí | Las expresiones regulares detectan letras, números, ... |
| áb | 3áb4 | Sí | ... incluso acentos, ... |
| a\$b | 1a$b2 | Sí | ... salvo los caracteres ^ . [ $ ( ) | * + ? { \ € que deben llevar una contrabarra \ antes, además de \n (nueva línea) y \t (tabulador) |
| [aeiou] | bic | Sí | Los corchetes definen los caracteres admitidos en una posición ... |
| bcd | No | ||
| [^aeiou] | bic | Sí | ... o no admitidos |
| aei | No | ||
| [p-t] | avr | Sí | Se pueden definir rangos de caracteres... |
| av1 | No | ||
| [B-D] | PMD | Sí | ... en minúsculas o mayúsculas ... |
| AV1 | No | ||
| [0-9] | b9d | Sí | ... o números |
| bcd | No | ||
| [[:alpha:]] | Cualquier carácter alfabético (sin acentos) | ||
| [[:digit:]] | Cualquier número | ||
| [[:alnum:]] | Cualquier número o carácter alfabéticos (sin acentos) | ||
| [[:punct:]] | Cualquier carácter que no sean letras y números (menos el euro) | ||
| [[:space:]] | Cualquier tipo de espacio en blanco | ||
| [[:upper:]] | Cualquier mayúscula (sin acentos) | ||
| [[:lower:]] | Cualquier minúscula (sin acentos) | ||
| ^ab | cab | No | Los caracteres tienen que estar al principio |
| abc | Sí | No importa que hayan caracteres después | |
| ab$ | abc | No | Los caracteres tienen que estar al final |
| cab | Sí | No importa que hayan caracteres antes | |
| ^ab$ | ab | Sí | Tiene que empezar y acabar por aba ... |
| abab | No | ... y no puede haber nada antes o después | |
| ab?c | abcde | Sí | El carácter b puede estar entre a y c... |
| acde | Sí | ... o no estar entre a y c ... | |
| adcde | No | ... pero no puede haber otro carácter | |
| a.c | abc | Sí | El . representa cualquier carácter ... |
| a c | Sí | ... incluso el espacio el blanco, ... | |
| abdc | No | pero sólo un carácter | |
| ab+c | abcde | Sí | El carácter b puede estar una vez... |
| abbbcde | Sí | ... o varias ... | |
| acde | No | ... pero tiene que estar al menos una vez. | |
| ab*c | abcde | Sí | El carácter b puede estar una vez... |
| abbbcde | Sí | ... o varias ... | |
| acde | Sí | ... o ninguna. | |
| ab{3}c | abbbc | Sí | Las llaves indican el número exacto de repeticiones del carácter, ... |
| abbbbc | No | ... no puede haber más ... | |
| abbc | No | ... ni menos. | |
| ab{2,4}c | abc | No | Se pueden definir rangos con límite inferior e inferior |
| abbc | Sí | ||
| abbbc | Sí | ||
| abbbbc | Sí | ||
| abbbbbc | No | ||
| ab{2,}c | abc | No | Se pueden definir rangos sin límite superior |
| a(bc){2}d | abcbcd | Sí | Los paréntesis definen agrupaciones de carácteres. En este caso bc tiene que aparecer repetido |
| a(bc)?d | abcd | Sí | Aquí bc puede estar ... |
| ad | Sí | ... o no estar, ... | |
| abd | No | ... pero no puede aparecer sólo la b, o sólo la c u otro carácter | |
| a(b|d)c | abc | Sí | Entre la a y la c puede estar el carácter b... |
| adc | Sí | ... o el carácter d, ... | |
| abdc | No | ... pero no los dos, ... | |
| ac | No | ... ni ninguno de ellos. | |
| ^(ab)|(dc)$ | abc | Sí | Está la pareja ab ... |
| adc | Sí | ... o dc ... | |
| abdc | Sí | ... o las dos, ... | |
| ac | No | ... pero no ninguna | |
| ^(ab)$|^(dc)$ | abc | No | Está la pareja ab, pero sobra la c ... |
| adc | No | ... o está la pareja dc, pero sobra la a. | |
| dc | Sí | Está una de las dos |