Busca em String - JavaScript

Para buscar uma substring em uma string que corresponda a uma expressão regular, utiliza-se o método exec() do objeto RegExp. Esse método recebe uma string para busca e retorna o resultado como um array. Veja o exemplo a seguir:

const contacts = "Email: mycomp@gmail.com  Phones: +1-234-567-8901 and +1-234-567-8902";
const phonePattern = /\+\d-\d{3}-\d{3}-\d{4}/;
const result = phonePattern.exec(contacts);
console.log(result);

Saída no console:

['+1-234-567-8901', index: 32, input: 'Email: mycomp@gmail.com  Phones: +1-234-567-8901 and +1-234-567-8902', groups: undefined]

Aqui, verificamos se na string contacts há texto que corresponda à expressão regular phonePattern (isto é, representa um número de telefone). O resultado é um array contendo os seguintes elementos:

  • O primeiro elemento do array é o texto que corresponde à expressão regular. No exemplo acima, é o texto "+1-234-567-8901".

  • O segundo parâmetro, index, é o índice do texto encontrado na string.

  • O terceiro parâmetro, input, é a string de entrada.

  • O último elemento representa grupos separados.

Se o texto que corresponde à expressão regular não for encontrado na string, o retorno será null.

Para extrair os elementos individuais desse array:

const contacts = "Email: mycomp@gmail.com Phones: +1-234-567-8901 and +1-234-567-8902";
const phonePattern = /\+\d-\d{3}-\d{3}-\d{4}/;
const result = phonePattern.exec(contacts);
if (result) {
    console.log("Phone number:", result[0]);    // +1-234-567-8901
    console.log("Index:", result.index);        // 32
}

No entanto, há dois números de telefone na string (e pode haver mais). Se quisermos extrair todos esses números, e não apenas o primeiro, devemos usar a flag g.

Alteremos o exemplo anterior aplicando a flag g:

const contacts = "Email: mycomp@gmail.com Phones: +1-234-567-8901 and +1-234-567-8902";
const phonePattern = /\+\d-\d{3}-\d{3}-\d{4}/g;
let result;
while ((result = phonePattern.exec(contacts)) !== null) {
    console.log("Phone number:", result[0]);
    console.log("Index: ", result.index);
}

No ciclo while, extraímos todas as correspondências do padrão com o texto na variável result, até que não haja mais correspondências. Note onde a flag g é indicada na expressão regular: /\+\d-\d{3}-\d{3}-\d{4}/g.

Saída no console:

Phone number: +1-234-567-8901
Index:  32
Phone number: +1-234-567-8902
Index:  52
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