Quantificadores em Expressões Regulares - JavaScript

Além das classes especiais de caracteres de expressões regulares que abordamos em artigos anteriores, existe outro grupo de combinações que especifica como os caracteres em uma string serão repetidos. Essas combinações são chamadas de quantificadores:

  • *: corresponde a qualquer número de repetições de uma sequência de caracteres, inclusive a sua ausência.

  • ?: corresponde a uma ocorrência da sequência de caracteres ou à sua ausência na string. Por exemplo, /h?ome/ corresponde às substrings "home" e "ome".

  • +: corresponde a uma ou mais repetições da sequência de caracteres.

  • {n}: corresponde a n repetições do caractere anterior. Por exemplo, h{3} corresponde à substring "hhh".

  • {n,}: corresponde a n ou mais repetições do caractere anterior. Por exemplo, h{3,} corresponde às substrings "hhh", "hhhh", "hhhhh", etc.

  • {n,m}: corresponde a um número de repetições do caractere anterior que varia de n a m. Por exemplo, h{2, 4} corresponde às substrings "hh", "hhh", "hhhh".

Caracteres Opcionais

Um número de telefone pode ter hífens para separar blocos individuais de dígitos, como "+1-234-567-8901", ou pode não ter separadores, como "12345678901". Assim, neste caso, os hífens são opcionais, e podemos refletir isso com o quantificador ?:

const exp = /\d-?\d\d\d-?\d\d\d-?\d\d\d\d/; 
 
const phone1 = "+1-234-567-8901";
const phone2 = "12345678901";
const phone3 = "1-2345678901";
console.log(exp.test(phone1));   // true
console.log(exp.test(phone2));   // true
console.log(exp.test(phone3));   // true

Aqui, -? indica que o caractere "-" pode ser opcional, mas se presente, ocorre apenas uma vez.

Quantidade Arbitrária de Caracteres

O símbolo *indica que o caractere anterior pode ocorrer um número arbitrário de vezes (incluindo 0 vezes). Por exemplo:

const exp = /a*/;    // corresponde a qualquer quantidade de caracteres a
 
const str1 = "";
const str2 = "a";
const str3 = "aa";
console.log(exp.test(str1));   // true
console.log(exp.test(str2));   // true
console.log(exp.test(str3));   // true

Caractere aparece pelo menos uma vez

O quantificador + indica que o caractere anterior pode ocorrer uma ou mais vezes. Por exemplo:

const exp = /a+/;    // corresponde a pelo menos um caractere "a";
const str1 = "";
const str2 = "a";
const str3 = "aa";
console.log(exp.test(str1));   // false
console.log(exp.test(str2));   // true
console.log(exp.test(str3));   // true

Quantidade Exata de Ocorrências

O quantificador {n} permite especificar uma quantidade exata de repetições do caractere anterior por meio do valor n. Por exemplo, para definir um número de telefone pode-se usar a expressão /\d{11}/, onde o símbolo \d (dígito numérico) ocorre 11 vezes consecutivas:

const exp = /\d{11}/; 

const phone1 = "+12345678901";
const phone2 = "1-2345678901";
const phone3 = "12345678901";
console.log(exp.test(phone1));   // true
console.log(exp.test(phone2));   // false
console.log(exp.test(phone3));   // true

Mas e se os blocos de números forem separados por um hífen, como em "+1-234-567-8901"? Nesse caso, poderíamos definir o comprimento de cada bloco: /\d-\d{3}-\d{3}-\d{4}/. Por exemplo:

const exp = /\d-\d{3}-\d{3}-\d{4}/; 
 
const phone1 = "+12345678901";
const phone2 = "1-234-567-8901";
const phone3 = "12345678901";
console.log(exp.test(phone1));   // false
console.log(exp.test(phone2));   // true
console.log(exp.test(phone3));   // false

Combinando com outros quantificadores, podemos tornar os hífens opcionais:

const exp = /\d-?\d{3}-?\d{3}-?\d{4}/; 
 
const phone1 = "+12345678901";
const phone2 = "1-234-567-8901";
const phone3 = "1-2345678901";
console.log(exp.test(phone1));   // true
console.log(exp.test(phone2));   // true
console.log(exp.test(phone3));   // true

Definição de Quantidade Mínima de Ocorrências

O quantificador {n,} permite definir uma quantidade mínima de ocorrências através de n. Suponha que nossas senhas devam ter pelo menos 8 caracteres:

const exp = /\w{8,}/; 
 
const code1 = "1234567890";
const code2 = "qwery5";
const code3 = "password123";
console.log(exp.test(code1));   // true
console.log(exp.test(code2));   // false
console.log(exp.test(code3));   // true

O metassímbolo \w corresponde a qualquer caractere numérico, alfabético ou sublinhado. Assim, a expressão /\w{8,}/ corresponde a strings que contêm uma subsequência de pelo menos 8 desses caracteres.

Definição de Quantidade Mínima e Máxima de Ocorrências

O quantificador {n,m} permite definir simultaneamente uma quantidade mínima (n) e máxima (m) de repetições. Por exemplo, podemos querer que os nomes não sejam muito curtos, digamos, não menos de 3 caracteres, e não muito longos, por exemplo, não mais que 10 caracteres:

const exp = /^[a-zA-Z]{3,10}$/; 
 
const code1 = "Tom";
const code2 = "Li";
const code3 = "Maximilianus";
console.log(exp.test(code1));   // true
console.log(exp.test(code2));   // false
console.log(exp.test(code3));   // false

A expressão /^[a-zA-Z]{3,10}$/ estabelece que qualquer caractere dentro das faixas "a-z" e "A-Z" deve aparecer pelo menos 3 vezes e não mais que 10 vezes, e isso deve representar uma palavra completa. Para isso, no início é indicado o símbolo ^ e no final o símbolo $.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com