Busca em String com 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