Cita:  
					Iniciado por abimaelrc 
  A pues voy a dejar que otro conteste, así como hiciste, jajajaja
 
Además no pides un porque en el primer post 
 
Edito: Es que no puedo dejarlo sin contestación, 

 La razón es porque el simbolo 
| lo que dice que verifique el patrón de la izquierda, que en el caso de que no tuviera el - debería hacer un match de algo similiar a A123 (porque lo que haces es algo como
 (A-Z){1}(0-9){3} un caracter y tres números) o el de la derecha que solo dice que verifica un match que tenga de la 
a a la 
z y que sean tres caracteres. Como el primero no se cumple, entonces el segundo sí y eso es lo que muestra. Ahora cuando se le añade el simbolo de -, entonces el patrón busca primero si existe algo como A-123 (porque lo que haces es algo como (A-Z){1}-(0-9){3} un caracter, el simbolo de menos y tres dígitos). Al encontrar el match, ya es suficiente y no continúa porque el preg_match busca la primera ocurrencia. Para más información de lo que hace (?<=.......) recomiendo esta lectura 
http://www.php.net/manual/en/regexp....assertions.php     
 
mi idea era usar las condicionales dentro del las regex 
 http://www.php.net/manual/en/regexp....onditional.php    
... intentare armar otro ejercicio con pcre... mientras tanto sedo el lugar 
  
------
PD: recuerda que los rangos a-z, 0-9, etc.... se pueden especificar dentro de corchetes y no de paréntesis