Cita:
Iniciado por preguntoncio
Buenas,
Estás usando la sintaxis PCRE (compatible con Perl), aunque en PHP también puede emplearse si quieres la sintaxis POSIX (con las funcines ereg y eregi).
Con expresiones regulares PCRE, el inicio y final del patrón siempre se delimita con /. Los caracteres ^ y $ indican principio y final de la cadena, respectivamente. {4,28} define un rango (de longitudes) y el patrón entre corchetes indica que debe tratarse de caracteres (a-z), dígitos (\d) o el guión bajo _. La i tras la marca final del patrón indica que no se hará distinción entre mayúsculas y minúsculas.
Es decir, esta expresión se corresponde con "Algo que desde el principio hasta el fin sólo contiene caracteres, números o guiones bajos, con una longitud mínima de 4 y máxima de 28".
Si quieres practicar con las expresiones regulares, puedes usar una función similar a ésta (con preg_match_all) y un array de cadenas, para ensayar y mostrar las que coincidan:
Código PHP:
<?php
$patron = "/\b[a-z\d_]{4,28}\b/i";
$cadena = "abC124 aBc_d14_ ab-1 66234 1Ab ab=cd __a1234";
$total = preg_match_all( $patron, $cadena, $coincidencias );
echo "Se han encontrado {$total} coincidencias:<br />";
print_r( $coincidencias[0] );
?>
En este caso, con el array de ejemplo que he puesto, obtendrías:
Código:
Se han encontrado 4 coincidencias:
Array
(
[0] => abC124
[1] => aBc_d14_
[2] => 66234
[3] => __a1234
)
Nota1: de tu ER original, he sustituido ^ y $ por el patrón \b, que indica límites de palabras (principio o final de cadena, espacios, comas, puntos, ...)
Un saludo.