Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/10/2008, 11:11
Avatar de Deschamps
Deschamps
 
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Expresiones Regulares

Cita:
Iniciado por preguntoncio Ver Mensaje
Código:
/^[a-z\d_]{4,28}$/i
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.