As Expressões Regulares são utilizadas para procurar e comparar caracteres. As regex servem exatamente para isto - localizar um determinado padrão de caracteres em um texto. Podem ser caracteres isolados ou uma porção deles dispostos numa determinada ordem. Lembrete: Caracter é o nome dado a cada um dos símbolos disponíveis e que podem ser usados para produzirem um programa de computador. Não são apenas letras, os textos possuem mais do que isso. As palavras são separadas por espaços, as sentenças são separadas por vírgulas e as frases são separadas por pontos. Existem ainda hífens, ponto e vírgula, sublinhado e tudo isso junto compõe o conjunto de caracteres. As expressões regulares como já foi dito, são formas de definir um padrão, para realizar pesquisa ou substituição de conteúdo e são independentes de linguagens de programação. Podem ser usadas em javaScript, em C, C++, Java e são manipuladas com o Objeto REGEXP, criado justamente para trabalhar com as expressões regulares. O Objeto String também tem algumas funções para manipular estas expressões.
No javaScript: var regex = new RegExp("Helena");//usando o operador new var string = "Helena"; alert(regex.test(string)); Resultado: true //nesse caso o resultado é um valor booleano
As expressões regulares também podem ser criadas usando a sintaxe literal.
No javaScript: var regex = /Helena/;//começa com barra e termina com barra, sem as aspas. var string = "Helena"; alert(regex.test(string)); Resultado: true //nesse caso o resultado é um valor booleano
No exercício anterior, a palavra Helena, está absolutamente igual. Ambas foram escritas com H maísculo. Para procurar helena por exemplo, entraria o modificador i, que ignora se a letra é maiúscula ou minúscula.
No javaScript: var regex = /Helena/i; //modificador que ignora se é maiúscula ou minúscula Obs: se fosse com o operador new, seria assim: var regex = new RegExp("Helena", "i"); var string = "helena"; alert(regex.test(string)); Resultado: true //nesse caso o resultado é um valor booleano
No javaScript: alert(/Helena/i.test("helena"));
Retorna a primeira ocorrência de conteúdo na string passada, que atende a expressão regular.
No javaScript: alert(/Helena/i.exec("helena"));/*como o i diz para ignorar maiúsculas ou minúsculas, ele retorna Helena ou helena*/ Resultado: Helena No javaScript: alert(/cedo/i.exec("Maria saiu cedo de casa. Seu pai também resoveu chegar mais cedo no serviço.")); /*aqui ele retorna somente uma ocorrência de string*/ Resultado: cedo
No javaScript:
var str = "Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no escritório."; alert(/cedo/ig.exec(str));
/*aqui ele retorna somente uma ocorrência de string*/
Obs: Essa função é do objeto String.
alert(str.match(/cedo/ig));
/*aqui ele retorna todas as ocorrências de string*/
Resultado: cedo, Cedo
Retorna a ocorrência de qualquer caracter, letra ou número, com exceção de novas linhas.
No javaScript: alert(/./.test("Filipe27")); Resultado: true //nesse caso o resultado é um valor booleano
Retorna a ocorrência de caracteres de a-z, de 0-9 e underline.
No javaScript: alert(/\w/.test("Filipe")); //não esquecer da barra invertida Resultado: true //nesse caso o resultado é um valor booleano
Retorna a ocorrência de espaços na string
No javaScript: alert(/\s/.test("Fil ipe")); //não esquecer da barra invertida Resultado: true // retorno de true porque tem um espaço
Retorna a ocorrência de dígitos (números)
No javaScript:
alert(/\d/.test("Filipe27")); //não esquecer da barra invertida
Resultado: true //retorno de true porque tem números
Retorna a ocorrência de qualquer caracter no início da string
No javaScript: alert(/^27/.test("27Filipe")); //ocorrência no início da string Resultado: true //retorno de true porque a string começa com o número 27
Retorna a ocorrência de qualquer caracter no fim da string
No javaScript: alert(/27$/.test("Filipe22"));//ocorrência no fim da string Resultado: false //retorno de false porque a string termina com o número 22
Retorna a ocorrência de dígitos no final do texto
No javaScript:
alert(/\d$/.test("Filipe22"));//ocorrência de dígitos no fim da string Resultado: true //retorna true porque a string termina com números
Retorna a ocorrência de dois dígitos no final do texto
No javaScript: alert(/\d\d$/.test("Filipe22"));// dois dígitos no fim da string Resultado: true //retorna true porque a string termina com dois números
Retorna a ocorrência de um padrão de números, nesse caso do CEP.
No javaScript: alert(/^\d\d\d\d\d\-\d\d\d$/.test("76422-216"));/*verifica se o padrâo de cinco dígitos, tracinho e mais três dígitos é verdadeiro.*/ Resultado: true //retorna true porque existe o padrão.
Os quantificadores servem para indicar uma quantidade de dígitos.
No javaScript: alert(/\d*/.test("Dal6"));//verifica a ocorrência de zero ou mais dígitos. Resultado: true //retorna true porque existe um dígito.
Retorna a ocorrência de um padrão de números, nesse caso do CEP de forma abreviada.
No javaScript: alert(/^\d{5}-\d{3}$/.test("76422-216")); /*forma resumida de verificar se o padrâo, feito para CEP, de cinco dígitos, tracinho e mais três dígitos é verdadeiro.*/ Resultado: true //retorna true porque existe o padrão.
Retorna a ocorrência de um padrão de números, nesse caso uma data.
No javaScript: alert(/^\d{2}\/\d{2}\/\d{4}$/.test("03/03/1959"));/*verifica se o padrâo de dois dígitos, barra, mais dois dígitos, barra e mais quatro dígitos é verdadeiro.*/ Resultado: true //retorna true porque o padrão está correto.
Retorna a ocorrência de um padrão de números, nesse exemplo a Data, de forma abreviada.
No javaScript: alert(/^\d{2}\/\d{2}\/\d{2,4}$/.test("03/03/1959"));/*forma resumida de verificar se o padrâo, feito para Data, de dois dígitos, barra, mais dois dígitos, barra e mais de dois ou quatro dígitos é verdadeiro.*/ Resultado: true //retorna true porque existe o padrão.
Retorna a ocorrência de um padrão de números, nesse caso de um e-mail.
No javaScript: alert(/\w+@\w+\.\w{2,3}/.test("helena@live.com")); /*verifica se o padrâo de um ou mais caracteres, depois arroba e novamente um ou mais caracteres, ponto (lembre-se de colocar a barra invertida, para escapar o ponto)e a ocorrência de no mínimo dois e no máximo três caracteres que seria o padrão para emails, ocorreu.*/ Resultado: true //retorna true porque o padrão está correto.
No javaScript: alert(/\w+@\w+\.\w{2,3}/.test("helena@live.com.br"));//aqui ele avalia true também, porque a expressão pede para avaliar de dois a três caracteres Resultado: true
No javaScript: alert(/Deus/.test("Deus"));/* */ Resultado: true //retorna true porque a palavra Deus foi encontrada.
No javaScript: alert(/Deus[a]/.test("Deusa"));/*este agrupador, diz para a regex que pode ser Deus ou Deusa*/ Resultado: true //retorna true porque ele tinha a opção de escolher usando também a letra a.
No javaScript:
alert(/\d[\d\,]*/.test("12,09"));/*para avaliar um número que tenha vírgula*/
Resultado: true //retornaria true também se fosse usada a notação americana, como no exemplo abaixo. No javaScript: alert(/\d[\d\,]*/.test("12.09"));/*padrão americano que usa o ponto no lugar da vírgula*/
Replace (função do objeto String)
No javScript: var str = "Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no serviço."; alert(str.match(/cedo/ig));//encontra as palavras que validam o padrão. Obs: o i ignora maísculas e minúsculas e g (g é o modificador que faz a pesquisa em toda a string. alert(str.replace(/cedo/ig, "mais tarde")); /*a função replace recebe uma expressão regular e em seguida faz a substituição desta palavra, pela palavra ou frase indicada.*/ Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no serviço. Resultado: Maria saiu mais tarde de casa. Seu pai também resoveu chegar mais tarde no serviço. No javScript: var str = "Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no serviço."; alert(str.match(/s[a-z]/ig)); alert(str.replace(/s[a-z]/ig, "z")); Resultado: sa, sa, No javScript: var url = "www.ada.com.br/clientes-2007.html"; //"http://www.ada.com.br/clientes-2007/clientes.lug" var re = /www.ada.com.br\/\w{2,}-\d{4}\.html/; alert(re.test(url));
No javScript: var url = "www.ada.com.br/clientes-2007.html"; //"http://www.ada.com.br/clientes-2007/clientes.lug" var re = /www.ada.com.br\/\w{2,}-\d{4}\.html/; alert(re.test(url)); var re = /(www.ada.com.br)\/\w{2,}-\d{4}\.html/; para guardar pedaços de uma string em uma variável: coloca-se entre parênteses, podendo esses mesmos pedaços serem depos utilizados em replace alert (url.replace(re, "http://$1")); replace recebe dois parâmetros, a expressão regular e o que se vai mudar Resultado:http://www.ada.com.br No javScript: var url = "www.ada.com.br/clientes-2007.html"; //"http://www.ada.com.br/clientes-2007/clientes.lug" var re = /www.ada.com.br\/\w{2,}-\d{4}\.html/; alert(re.test(url)); var re = /(www.ada.com.br)\/(\w{2,})-(\d{4})\.html/; /*para trocar três parte da string*/ alert (url.replace(re, "http://$1/$3/$2.lug")); Resultado:http://www.ada.com.br/2007/clientes.lug