"¿Para qué sirven los regex?" os preguntáis. Os lo explico con ejemplos prácticos! Hilo va ⬇
Los regex sirve para buscar cosas sin saber qué estas buscando exactamente. Es como cuando de pequeño jugabas al Lego y necesitabas una cosa que encajase en esa otra cosa, para poder juntar las 2 cosas; así que tirabas el cubo entero de lego y te ponías a buscar.
"Pero cómo voy a buscar algo sin saber qué estoy buscando?"

Es fácil. Tu ponte que tu jefe te dice "quiero que valides este campo de URL para que la gente no pueda meter otra cosa que no sea una URL".

Ahi tienes 2 opciones. Dejarle al usuario meter lo que quiera y luego (...)
(...) hacer un "curl <lo que haya en el campo>" para ver si es una URL o no. O también puedes describir en K̵l̵i̵n̵g̵o̵n̵ regex unas reglas genéricas que intenten cubrir todos los posibles escenarios que se te ocurran (mas o menos el 7% del total de posibilidades). Ejemplo:
(?:(?:(?:https?|ftp):)?\/\/)?(?:\w+(?::\w*)?@)?(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\.(?:[a-z\\u00a1-\\uffff]{2,}))(?::\d{2,5})?(?:[\/?#]\S*)?
Sigues sin estar convencido de la utilidad de regex? Te pongo otro ejemplo.

Tu ponte que tu jefe te dice "quiero que valides este campo de email para que la gente no pueda meter otra cosa que no sea un email valido".

Volvemos a lo de antes. Puedes dejarle al usuario (...)
(...) meter lo que le dé la gana y luego intentar enviar un correo a <campo de email>. O también puedes validar el campo con un conjuro mágico en É̵l̵f̵i̵c̵o̵ ̵a̵n̵t̵i̵g̵u̵o̵ regex:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0
-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

(Es un conjuro muy chungo, necesito tuit y medio para ponerlo todo)
"Sirve para algo más aparte de para validar?"

Claro que sí! Tu ponte que te pasan un CSV medio-roto de esos que a saber de donde cojones lo han sacado, y te piden que lo arregles. Ahí, como en los otros 2 casos, tienes 2 opciones.

Puedes copiar el CSV en VSCode y usando (...)
(...) Ctrl+D / multi-cursor / multi-selección arreglarlo en 3 o 4 minutos.

O también puedes usar Ctrl+Shift+F para sustituir <cosas>, activando regex.
Puede que tardes unas 4 o 5 horas, pero una vez que tengas el regex bueno, te va a servir para cualquier otro CSV que t.... oh... espera... nah, olvídalo.
"Vale, estoy tentado de comprartelo. Algo más que deba saber?"

Ahora que lo dices, una cosilla sin demasiada importancia. Hay una cosa que se llama "ataque ReDoS", pero nah... eso es imposible que te pase, tú sin miedo!

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Diario de un picateclas

Diario de un picateclas Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @devruso

6 Dec
Hoy os voy a explicar por qué vuestra API REST hecha en Go, optimizada a mas no poder, escalada y balanceada en AWS, con SLA de 389% tarda 475ms en responder, mientras que el cutre-api.php de @MarcosBL escupe JSONs en 7ms. Dentro hilo! ⬇
Todo empieza cuando vuestra página web le hace una petición a la API ™. Unos cuantos pobres bytes empaquetados que tienen por delante mas camino que Frodo.
La primera parada es el Internet Gateway de AWS. Majestuoso como Los Argonath, observando quién entra y quién sale.
Read 14 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!