Quantificadores

Opcional - ?

O meta caracteres ? tornar o caractere ou expressão anterior a ele opcional, ou seja, pode ou não aparecer.


const regex = /ondas?/

const text = 'onda'
const text2 = 'ondas'

console.log(regex.test(text)) // true
console.log(regex.test(text2)) // true

No nosso padrão especificado, estamos procurando uma palavra que de match tanto com onda ou ondas, isso por que deixamos a letra s como opcional.


const regex = /fala[r!]?/

const text = 'falar'
const text2 = 'fala!'
const text3 = 'fala'

console.log(regex.test(text)) // true
console.log(regex.test(text2)) // true
console.log(regex.test(text3)) // true

Agora, estamos procurando pelo seguinte padrão, primeiro temos a sequência fala, depois temos uma lista, falando que pode ter o r ou o !, e ela também é opcional.

Asterisco - *

O asteriscos * significa que o caractere ou a expressão anterior a ele pode aparecer repetidas vezes ou não.


const regex = /fala!*/

const text = 'fala'
const text2 = 'fala!'
const text3 = 'fala!!!!!!!'

console.log(regex.test(text)) // true
console.log(regex.test(text2)) // true
console.log(regex.test(text3)) // true

Mais - +

O mais + é bem parecido com o asterisco, porém sem a parte opcional, ou seja, o caractere ou expressão em que o mais for aplicado precisa aparecer pelo menos uma vez para que o match aconteça.


const regex = /fala!+/

const text = 'fala'
const text2 = 'fala!'
const text3 = 'fala!!!!!!!'

console.log(regex.test(text)) // false
console.log(regex.test(text2)) // true
console.log(regex.test(text3)) // true

Chaves - {n, m}

As chaves {} servem para podermos especificar quantas vezes queremos que o caractere ou expressão se repita. Podemos trabalhar com as chaves de diversas formas:

  • {1,3} - De uma a três repetições;
  • {0,3} - Até três repetições;
  • {3} - Exatamente três repetições;
  • {3,} - Mínimo de três repetições.

const regex = /[0-9]{2,3}/

const text = '1'
const text2 = '12'
const text3 = '123'

console.log(regex.test(text)) // false
console.log(regex.test(text2)) // true
console.log(regex.test(text3)) // true