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: