Llaves en expresiones regulares de JavaScript
Los operadores '+', '*', '?'
son útiles, sin embargo, con ellos no se puede especificar
un número concreto de repeticiones. En este caso
viene en tu ayuda el operador {}.
Funciona de la siguiente manera: {5}
- cinco repeticiones, {2,5} – se repite
de dos a cinco (ambos inclusive), {2,}
- se repite dos o más veces. Presta atención
a que no existe esta variante - {,2}.
Mira los ejemplos:
Ejemplo
En este ejemplo el patrón de búsqueda se ve así:
letra 'x', letra 'a' una
o dos veces, letra 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Como resultado en la variable se escribirá lo siguiente:
'xx ! ! xaaax'
Ejemplo
En este ejemplo el patrón de búsqueda se ve así:
letra 'x', letra 'a' dos
veces o más, letra 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Como resultado en la variable se escribirá lo siguiente:
'xx xax ! !'
Ejemplo
En este ejemplo el patrón de búsqueda se ve así:
letra 'x', letra 'a' tres
veces, letra 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Como resultado en la variable se escribirá lo siguiente:
'xx xax xaax !'
Ejemplo
En este ejemplo el patrón de búsqueda se ve así:
letra 'a' diez veces:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Como resultado en la variable se escribirá lo siguiente:
'aaa ! aaa'
Ejemplo
En este ejemplo el autor del código quería este patrón:
letra 'x', letra 'a' tres
veces o menos, letra 'x',
pero, desgraciadamente, esto - {,3} - no funciona.
Hay que especificarlo explícitamente:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Como resultado en la variable se escribirá lo siguiente:
'xx ! ! !'
Ejemplo
El cero también está permitido:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Como resultado en la variable se escribirá lo siguiente:
'! ! ! !'
Problemas prácticos
Dada la cadena:
let str = 'aa aba abba abbba abbbba abbbbba';
Escribe una expresión regular que encuentre las cadenas
'abba', 'abbba', 'abbbba'
y solo ellas.
Dada la cadena:
let str = 'aa aba abba abbba abbbba abbbbba';
Escribe una expresión regular que encuentre las cadenas
del tipo 'aba', en las que 'b' aparece
menos de 3 veces (inclusive).
Dada la cadena:
let str = 'aa aba abba abbba abbbba abbbbba';
Escribe una expresión regular que encuentre las cadenas
del tipo 'aba', en las que 'b' aparece
más de 4 veces (inclusive).