Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/10/2016, 12:17
Avatar de manuparquegiralda
manuparquegiralda
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: Expresión regular con 1 solo guión/guión bajo

Prueba esta expresión regular a ver si te sirve.

Código PHP:
Ver original
  1. ^([A-Za-z\d]-?_?){4,15}[A-Za-z\d]$


Según el patrón que pusiste, solo eran válidos cualquier carácter alfabético que estuviese en minúsculas, no sé si era eso lo que pretendías. En la que te he puesto sirve cualquier carácter alfabético en mayúsculas o minúsculas, si buscas que solo sea en minúsculas quítale la A-Z que hay entre ambos corchetes.

Te la explico para que vayas cogiéndole el truco a esto de las expresiones regulares:

- El carácter ^ nos dice que la cadena tiene que empezar por lo que le prosiga, en este caso sería lo que está dentro del corchete [A-Za-z\d], es decir, tiene que empezar por cualquier letra mayúscula o minúscula o carcater numérico \d

- El paréntesis indica que es un conjunto, es decir, la cadena que venga tiene que cumplir con todo lo que metemos dentro del paréntesis como un conjunto. Si pusiéramos detrás de ese paréntesis otro paréntesis con más opciones la cadena tendría que cumplir con las propiedades de ambos paréntesis en el mismo orden que están estos. Por ejemplo:

Código PHP:
Ver original
  1. ^(([A-Za-z\d]-?_?){4,15})(\s)?([A-Za-z\d]-?_?){4,15}[A-Za-z\d]$

Esta expresión regular solo tomaría una cadena que tuviese dos palabras y cada palabra debería tener las mismas condiciones que las que tu quieres, es decir, podrán tener letras, números y opcionalmente, un guión bajo y un guión. No te haría match con una sola palabra aunque cumpla las condiciones que tu quieres y solo permitiría que hubiera un espacio (\s)? entre cada palabra.

- Dentro del paréntesis pero fuera del corchete tenemos -? y _?. El símbolo ? indica que el caracter que le precedepuede estar o no estar, pero no puede estar más de una vez. En este caso podrá tener un guión bajo o no tenerlo y un guión o no tenerlo.

- Con {4,15} le indicamos que la cadena que cumpla con los parámetros introducidos dentro del paréntesis tiene que tener entre 4 y 15 caracteres.

- Por último con [A-Za-z\d]$ lo que indicamos es que la cadena debe acabar con cualquier letra mayúscula o minúscula o con cualquier número y nunca con un caracter distinto a los que estén dentro del corchete.

No sé si me he explicado bien, pero de todas formas, aquí tienes una página que sirve para probar las expresiones regulares, está bastante bien, échale un vistazo y prueba la que te he pasado para entenderla mejor.

http://www.regexr.com/
__________________
Diseño Web - Arisman Web

Última edición por manuparquegiralda; 12/10/2016 a las 12:50