Las 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 |