imagen

expresiones regulares para novatos

Ejemplos básicos

Encontrar cadena que... regex seleccionar
inicia con +56 ^+56 +5694444565
termina con 55 55$ 23423455
Inicia con 56 (^56) seguido de 7 dígitos entre 0 y 9 ([0-9]{7}) y finaliza con 45 (45$) ^56[0-9]{7}45$ 569444545
Es un string de 8 dígitos ^[0-9]{8}$
Inicia con 9 (^9) seguido de 8 dígitos entre cero y nuevo ([0-9]{8}) y nada mas ($) ^9[0-9]{8}$
Inicia con 569 (^569) seguido de 8 dígitos entre cero y nuevo ([0-9]{8}) y nada mas ($) ^569[0-9]{8}$
Inicia con +569 (^\+569) seguido de 8 dígitos entre cero y nuevo ([0-9]{8}) y nada mas ($). El signo + debe ser escapado con un backslash. ^\+569[0-9]{8}$
Uno o mas digitos [0-9]+
Un punto [.] seguido de 2 o 3 letras [a-z]{2,3}, una o mas veces + sin nada despues $ ([.]{2,3})+$ .com.au .org.cl .cl.fr
Obtener todas las cadenas que inician con http seguido de cualquier caracter (.) con una o mas ocurrencias (+) hasta el primer espacio ([^\s]) http.[^\s]+

Grupos

En una misma expresión podemos crear subgrupos para facilitar su manejo posterior. En algunos lenguajes nos sera útil recibir las ocurrencias de la cadena que buscamos en un array por ejemplo y a su ves este array puede contener subgrupos de cadenas.

Supongamos que queremos buscar TODAS la correncias de la siguiente cadena en un párrafo [book1](http://web.com). Y necesitamos usar lo que esta dentro de los [] y lo que esta dentro de los () por separado, quizás nos seria de utilidad recibir las ocurrencias ya separadas.

Expresión regular sin agrupar, podríamos usar la siguiente \[.[^\)]{1,}\). Dependiendo del lenguaje, podemos obtener un array con algo como esto

// Ejemplo usando 
const arrayResult = string.match(/\[.[^\)]{1,}\)/g);

// output
[
  "[this book](https://codigo.com)",
  "[this book 2](https://pagina2.com)"
]

Expresión regular agrupada, usamos paréntesis redondos para definir los grupos, podríamos usar la siguiente ([.[^)]{1,}])((.[^)]{1,})). Dependiendo del lenguaje, podemos obtener un array con algo como esto

// Ej en nodejs
const arrayResult = [...string.matchAll(/(\[.[^\)]{1,}\])(\(.[^\)]{1,}\))/g)]
// ([.[^)]{1,}])((.[^)]{1,}))
// Grupo 1 => ([.[^)]{1,}])
// Grupo 1 => ((.[^)]{1,}))
[
  [
    '[this book](https://codigo.com)',
    '[this book]',
    '(https://codigo.com)',
    index: 0,
    input: '[this book](https://codigo.com) and some text. [book2](https://codigo2.com) more text.',
    groups: undefined
  ],
  [
    '[book2](https://codigo2.com)',
    '[book2]',
    '(https://codigo2.com)',
    index: 47,
    input: '[this book](https://codigo.com) and some text. [book2](https://codigo2.com) more text.',
    groups: undefined
  ]
]

Cada elemento del array contiene

  1. La selección completa
  2. El grupo 1
  3. El grupo 2
  4. Y luego información extra