Busca em String - JavaScript
Para buscar uma substring em uma string que corresponda a uma expressão regular, utiliza-se o método exec()
RegExp
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
phonePattern
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,
, é o índice do texto encontrado na string.index
O terceiro parâmetro,
, é a string de entrada.input
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
g
/\+\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