Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
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: