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: