Las expresiones regulares son una poderosa herramienta que debe estar en el cinturón de herramientas de todos los desarrolladores. Estas expresiones tratan de coincidir contra una cadena de caracteres para extraer la información que nosotros necesitemos y así, ahorrarnos un montón de tiempo a la hora de desarrollar sitios web dinámicos.
Los desarrolladores web se enfrentan a tareas distintas comparado con los desarrolladores de software, pero muchos de los mismos fundamentos del código permanecen. Las expresiones regulares (o regex) tienen una curva de aprendizaje inicial empinada, pero pueden ser tremendamente útiles cuando se usan correctamente.
La parte más difícil de aprender es la sintaxis y sobre todo el hecho de empezar a crear tus propias expresiones regulares partiendo de cero. Para ahorrar tiempo he compilado 25 fragmentos de código regex diferentes que pueden ser incorporados en tus propios proyectos. Y como las expresiones regulares no se limitan a un solo lenguaje, puede aplicar estos snippets en cualquier lenguaje web, desde JavaScript, PHP o Python.
Código muy útil para saber si una contraseña es lo bastante segura. Con este código te ahorrarás el escribir tu propio corrector de contraseñas desde cero.
2. Color Hexadecimal
#([a-fA-F]|[0-9]){3, 6}
Ya sabéis que para establecer colores en el desarrollo web, es necesario que estén formateados en hexadecimal. Si le estamos solicitando a un usuario que ingrese un color en hexadecimal, tendremos que comprobar si lo ha hecho correctamente. Y qué mejor para ello que hacerlo mediante este código.
3. Validar dirección de email
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm
Una de las tareas más comunes para un desarrollador es comprobar si una cadena está formateada con el estilo de una dirección de correo electrónico. Hay muchas maneras distintas para llevar a cabo esta tarea, pero esta creemos que es la más ligera de todas las que he conocido.
Esta expresión regular comprobará una cadena para ver si se sigue la sintaxis de direcciones IPv6.
6. Separador de miles
/d{1,3}(?=(d{3})+(?!d))/g
Los sistemas de numeración tradicionales requieren una coma, un punto, o algún otro símbolo en cada tres dígitos. Este código regex funciona con cualquier número y aplicará cualquier marca que elijas para cada tres dígitos separando entre miles, millones, etc.
7. Anteponer HTTP a enlace
if (!s.match(/^[a-zA-Z]+:///))
{
s = 'http://' + s;
}
Independientemente del lenguaje en que trabajes (JavaScript, Ruby o PHP), esta expresión regular puede resultar muy útil. Comprobará cualquier cadena URL para ver si tiene un prefijo HTTP / HTTPS, y si no, lo antepone en consecuencia.
8. Obtener nombre de dominio
/https?://(?:[-w]+.)?([-w]+).w+(?:.w+)?/?.*/i
Un dominio puede contener el protocolo inicial (HTTP o HTTPS) aparte de un subdominio, más la ruta adicional de la página. Puedes utilizar este fragmento para eliminar todo eso y quedarte sólo con el nombre del dominio sin las demás florituras.
9. Ordenar palabras clave por número de palabras
^[^s]*$ matches exactly 1-word keyword
^[^s]*s[^s]*$ matches exactly 2-word keyword
^[^s]*s[^s]* matches keywords of at least 2 words (2 and more)
^([^s]*s){2}[^s]*$ matches exactly 3-word keyword
^([^s]*s){4}[^s]*$ matches 5-words-and-more keywords (longtail)
Los usuarios de Google Analytics y Webmaster Tools van a disfrutar con esta expresión regular. Puedes ordenar y organizar las palabras clave, basándote en el número de palabras que se utilizan en una búsqueda. Esto puede ser numéricamente específico (es decir, sólo 5 palabras) o puede coincidir con una serie de palabras (es decir, 2 o más palabras). Cuando se utiliza para ordenar los datos de análisis, se convierte en una poderosa expresión regular.
Si eres desarrollador de PHP, en algún momento puede que tengas que parsear el código en busca de objetos binarios codificados en Base64. Este fragmento se puede aplicar a todo el código PHP y comprueba que no existan cadenas Base64.
Los desarrolladores web se enfrentan a tareas distintas comparado con los desarrolladores de software, pero muchos de los mismos fundamentos del código permanecen. Las expresiones regulares (o regex) tienen una curva de aprendizaje inicial empinada, pero pueden ser tremendamente útiles cuando se usan correctamente.
La parte más difícil de aprender es la sintaxis y sobre todo el hecho de empezar a crear tus propias expresiones regulares partiendo de cero. Para ahorrar tiempo he compilado 25 fragmentos de código regex diferentes que pueden ser incorporados en tus propios proyectos. Y como las expresiones regulares no se limitan a un solo lenguaje, puede aplicar estos snippets en cualquier lenguaje web, desde JavaScript, PHP o Python.
1. Contraseñas válidas
^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$
Código muy útil para saber si una contraseña es lo bastante segura. Con este código te ahorrarás el escribir tu propio corrector de contraseñas desde cero.
2. Color Hexadecimal
#([a-fA-F]|[0-9]){3, 6}
Ya sabéis que para establecer colores en el desarrollo web, es necesario que estén formateados en hexadecimal. Si le estamos solicitando a un usuario que ingrese un color en hexadecimal, tendremos que comprobar si lo ha hecho correctamente. Y qué mejor para ello que hacerlo mediante este código.
3. Validar dirección de email
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm
Una de las tareas más comunes para un desarrollador es comprobar si una cadena está formateada con el estilo de una dirección de correo electrónico. Hay muchas maneras distintas para llevar a cabo esta tarea, pero esta creemos que es la más ligera de todas las que he conocido.
4. Dirección IPv4
/b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b/
Esta expresión regular comprobará una cadena para ver si se sigue la sintaxis de direcciones IPv4.
5. Dirección IPv6
(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
Esta expresión regular comprobará una cadena para ver si se sigue la sintaxis de direcciones IPv6.
6. Separador de miles
/d{1,3}(?=(d{3})+(?!d))/g
Los sistemas de numeración tradicionales requieren una coma, un punto, o algún otro símbolo en cada tres dígitos. Este código regex funciona con cualquier número y aplicará cualquier marca que elijas para cada tres dígitos separando entre miles, millones, etc.
7. Anteponer HTTP a enlace
if (!s.match(/^[a-zA-Z]+:///))
{
s = 'http://' + s;
}
Independientemente del lenguaje en que trabajes (JavaScript, Ruby o PHP), esta expresión regular puede resultar muy útil. Comprobará cualquier cadena URL para ver si tiene un prefijo HTTP / HTTPS, y si no, lo antepone en consecuencia.
8. Obtener nombre de dominio
/https?://(?:[-w]+.)?([-w]+).w+(?:.w+)?/?.*/i
Un dominio puede contener el protocolo inicial (HTTP o HTTPS) aparte de un subdominio, más la ruta adicional de la página. Puedes utilizar este fragmento para eliminar todo eso y quedarte sólo con el nombre del dominio sin las demás florituras.
9. Ordenar palabras clave por número de palabras
^[^s]*$ matches exactly 1-word keyword
^[^s]*s[^s]*$ matches exactly 2-word keyword
^[^s]*s[^s]* matches keywords of at least 2 words (2 and more)
^([^s]*s){2}[^s]*$ matches exactly 3-word keyword
^([^s]*s){4}[^s]*$ matches 5-words-and-more keywords (longtail)
Los usuarios de Google Analytics y Webmaster Tools van a disfrutar con esta expresión regular. Puedes ordenar y organizar las palabras clave, basándote en el número de palabras que se utilizan en una búsqueda. Esto puede ser numéricamente específico (es decir, sólo 5 palabras) o puede coincidir con una serie de palabras (es decir, 2 o más palabras). Cuando se utiliza para ordenar los datos de análisis, se convierte en una poderosa expresión regular.
10. Encontrar una cadena Base64 en PHP
?php[ t]eval(base64_decode('(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?){1}'));
Si eres desarrollador de PHP, en algún momento puede que tengas que parsear el código en busca de objetos binarios codificados en Base64. Este fragmento se puede aplicar a todo el código PHP y comprueba que no existan cadenas Base64.