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.