anterior | início | próxima

JavaScript

característica  como fazer
-------------------------------------------------------
busca           métodos test, search, exec, match
substituição    método replace
divisão         método split
ER crua         /entre barras/
ignore M/m      modificador i
global          modificador g

O suporte a ERs no Javascript foi incluído nos dois navegadores mais famosos desde as seguintes versões: Netscape 4.0x e Internet Explorer 4.0, e o nosso personagem principal agora vai ser o objeto global RegExp.

Para definir uma ER no formato cru, basta colocá-la entre /barras/, e logo após a segunda barra, podemos colocar os modificadores de maiúsculas e minúsculas e substituição global, assim: /[a-z]/ig.

Para criar um objeto do tipo RegExp, basta definir uma variável com uma /ER/. O método test é um dos que fazem a busca de padrões:

var er = /^[a-z]+$/i;
if (er.test("JAVA"))
  alert("casou!");

Fácil, não? Então para complicar, se você quiser fazer uma substituição, o método replace deve ser usado. Detalhe: ele é um método de uma string e não de uma /ER/, mas recebe ERs. Não entendeu? Veja:

var eu = "estou com fome";
document.write(eu.replace(/....$/, "sono"));

Em Javascript, temos uma simetria entre os objetos regexp e string, com métodos de mesma função, mas nomes diferentes. Os "gêmeos siameses" são test e search para busca simples e exec e match para busca com pescagem de dados. E lembre-se de que um método regexp recebe como parâmetro uma string e vice-versa, veja:

regexp.test("string")
string.search(/regexp/)

regexp.exec("string")
string.match(/regexp/)

Cuidado para não confundir! Falando em confundir, vamos ver o mais complicado de todos: o exec, que, além de fazer o casamento, povoa uma matriz com vários dados que podem ser recuperados posteriormente. Acompanhe o exemplo a seguir e note que o matriz[1] é o similar Javascript para o retrovisor \1:

var er = /^(\w+) (\w+)/;
var matriz = er.exec("um dois três");
document.write(matriz.index, "<BR>",
               matriz.input, "<BR>",
               matriz[0],    "<BR>",
               matriz[1],    "<BR>",
               matriz[2]);

//Resultado:
// 0              // índice do casamento
// um dois três   // texto original
// um dois        // trecho casado
// um             // conteúdo do grupo 1
// dois           // conteúdo do grupo 2

Mais informações podem ser encontradas em:

Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
anterior | início | próxima