SlideShare uma empresa Scribd logo
1 de 67
JavaScript - Expressões Regulares
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
Rodrigo Branas
rodrigo.branas@agilecode.com.br
http://www.agilecode.com.br
Formado em Ciências da Computação pela UFSC e
MBA em Gerenciamento de Projetos pela FGV, é
arquiteto de software há mais de 15 anos,
especialista nas linguagens Java e JavaScript. É
também autor do livro AngularJS Essentials e de
diversos artigos da revista Java Magazine. Além disso,
é professor e palestrante, tendo participado da formação de mais de
1.000 desenvolvedores de software e apresentado mais de 100
palestras em eventos no Brasil e no exterior. Fundador da Agile Code,
uma empresa de treinamento e consultoria, atualmente é
apresentador de um canal no YouTube sobre JavaScript, AngularJS e
muito mais!
Acompanhe a série Desvendando a linguagem
JavaScript pelo YouTube em:
http://www.youtube.com/rodrigobranas
As expressões regulares são estruturas
formadas por uma sequência de caracteres
que especificam um padrão formal
Validação de campos
Extração de dados
Substituição de caracteres em textos
Criando uma expressão regular
1. var regExp = /<expressão regular>/;
Criando uma expressão regular
1. var regExp = new RegExp("<expressão regular>");
RegExp API
exec – Executa a RegExp, retornando os
detalhes
test – Testa a RegExp, retornando true
ou false
Telefone – Passo 1
Nosso primeiro exemplo envolve o reconhecimento de
um telefone simples: 9999-9999. Esse telefone será
evoluído por meio de novos cenários para estimular a
utilização de grupos, metacaracteres, quantificadores e
muito mais!
Executando a expressão regular
1. var regExp = /9999-9999/;
2.
3. var telefone = "9999-9999";
4. regExp.exec(telefone); // ['9999-9999', index: 0,
input: '9999-9999']
Testando a expressão regular
1. var regExp = /9999-9999/;
2.
3. var telefone = "9999-9999";
4. regExp.test(telefone); // true
Telefone – Passo 2
Evoluímos nosso primeiro exemplo e agora o telefone
tem código de área: (48) 9999-9999, como fazer para
reconhecê-lo?
Testando a expressão regular
1. var regExp = /9999-9999/;
2.
3. var telefone = "9999-9999";
4. regExp.test(telefone); // true
Testando a expressão regular
1. var regExp = /(90) 9999-9999/;
2.
3. var telefone = "(90) 9999-9999";
4. regExp.test(telefone); // false
Escapando caracteres especiais
 - A barra é utilizada antes de
caracteres especiais, com o objetivo de
escapá-los.
Escapando caracteres especiais
1. var regExp = /(90) 9999-9999/;
2.
3. var telefone = "(90) 9999-9999";
4. regExp.test(telefone); // false
Escapando caracteres especiais
1. var regExp = /(90) 9999-9999/;
2.
3. var telefone = "(90) 9999-9999";
4. regExp.test(telefone); // true
Telefone – Passo 3
Vamos evoluir novamente e agora, no nosso terceiro
exemplo, temos que fazer com que o telefone seja
reconhecido únicamente, não permitindo outros
caracteres antes e depois!
Iniciando e finalizando com um
determinado caractere
^ - Inicia com um determinado caractere
$ - Finaliza com um determinado
caractere
Lidando com caracteres antes e depois
1. var regExp = /(90) 9999-9999/;
2.
3. var telefone = "Ligue para (90) 9999-9999, tratar com
João";
4. regExp.test(telefone); // true
Lidando com caracteres antes e depois
1. var regExp = /^(90) 9999-9999$/;
2.
3. var telefone = "Ligue para (90) 9999-9999, tratar com
João";
4. regExp.test(telefone); // false
Lidando com caracteres antes e depois
1. var regExp = /^(90) 9999-9999$/;
2.
3. var telefone = "(90) 9999-9999";
4. regExp.test(telefone); // true
Telefone – Passo 4
Chegou a hora de aceitar qualquer número de telefone,
para isso precisamos flexibilizar a expressão regular por
meio de grupos.
Grupos de caracteres
[abc] – Aceita qualquer caractere
dentro do grupo, nesse caso a, b e c
[^abc] – Não aceita qualquer caractere
dentro do grupo, nesse caso a, b ou c
[0-9] – Aceita qualquer caractere
entre 0 e 9
[^0-9] – Não aceita qualquer caractere
entre 0 e 9
Utilizando grupos de caracteres
1. var regExp = /^(90) 9999-9999$/;
2.
3. var telefone = "(90) 9999-9999";
4. regExp.test(telefone); // true
Utilizando grupos de caracteres
1. var regExp = /^(90) 9999-9999$/;
2.
3. var telefone = "(80) 9977-8899";
4. regExp.test(telefone); // false
Utilizando grupos de caracteres
1. var regExp = /^([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0-
9][0-9][0-9][0-9]$/;
2.
3. var telefone = "(80) 9977-8899";
4. regExp.test(telefone); // true
Telefone – Passo 5
Não é muito grupo? Para evitar a repetição exagerada
de padrões em uma expressão regular, podemos
utilizar quantificadores.
Quantificadores – Parte 1
Os quantificadores podem ser aplicados a caracteres,
grupos, conjuntos ou metacaracteres.
{n} – Quantifica um número específico
{n,} – Quantifica um número mínimo
{n,m} – Quantifica um número mínimo e
um número máximo
Utilizando quantificadores
1. var regExp = /^([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0-
9][0-9][0-9][0-9]$/;
2.
3. var telefone = "(80) 9977-8899";
4. regExp.test(telefone); // true
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4}-[0-9]{4}$/;
2.
3. var telefone = "(80) 9977-8899";
4. regExp.test(telefone); // true
Telefone – Passo 6
E se for necessário aceitar números com 8 ou 9 dígitos?
Podemos utilizar um quantificador para especificar um
determinado intervalo.
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4}-[0-9]{4}$/;
2.
3. var telefone = "(80) 9977-8899";
4. regExp.test(telefone); // true
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4}-[0-9]{4}$/;
2.
3. var telefone = "(80) 99977-8899";
4. regExp.test(telefone); // false
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-[0-9]{4}$/;
2.
3. var telefone = "(80) 99977-8899";
4. regExp.test(telefone); // true
Telefone – Passo 7
E se o hífen for opcional? É muito comum que se
escreva sem hífen! Podemos utilizar um quantificador
para torná-lo opcional.
Quantificadores - Parte 2
Os quantificadores podem ser aplicados a caracteres,
grupos, conjuntos ou metacaracteres.
? – Zero ou um
* – Zero ou mais
+ – Um ou mais
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-[0-9]{4}$/;
2.
3. var telefone = "(80) 99977-8899";
4. regExp.test(telefone); // true
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-[0-9]{4}$/;
2.
3. var telefone = "(80) 999778899";
4. regExp.test(telefone); // false
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/;
2.
3. var telefone = "(80) 999778899";
4. regExp.test(telefone); // true
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/;
2.
3. var telefone = "(80) 999778899";
4. regExp.test(telefone); // true
Telefone – Passo 8
E se o telefone agora estiver em uma estrutura de
tabela, como fazer para reconhecer cada linha?
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // false
Utilizando quantificadores
1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // false
Utilizando quantificadores
1. var regExp = /([0-9]{2}) [0-9]{4,5}-?[0-9]{4}/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // false
Utilizando quantificadores
1. var regExp = /<table><tr>(<td>([0-9]{2}) [0-9]{4,5}-
?[0-9]{4}</td>)+</tr></table>/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // true
Telefone – Passo 9
Em muitos casos, é possível substituir os grupos por
metacaracteres específicos!
Metacaracteres
. – Representa qualquer caractere
w – Representa o conjunto [a-zA-Z0-9_]
W – Representa o conjunto [^a-zA-Z0-9_]
d – Representa o conjunto [0-9]
D – Representa o conjunto [^0-9]
s – Representa um espaço em branco
S – Representa um não espaço em branco
n – Representa uma quebra de linha
t – Representa um tab
Utilizando metacaracteres
1. var regExp = /<table><tr>(<td>([0-9]{2}) [0-9]{4,5}-
?[0-9]{4}</td>)+</tr></table>/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // true
Utilizando metacaracteres
1. var regExp = /<table><tr>(<td>([0-9]{2}) [0-9]{4,5}-
?[0-9]{4}</td>)+</tr></table>/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // true
Utilizando metacaracteres
1. var regExp = /<table><tr>(<td>(d{2})sd{4,5}-
?d{4}</td>)+</tr></table>/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. regExp.test(telefone); // true
String API
match – Executa uma busca na String e retorna
um array contendo os dados encontrados, ou
null.
split – Divide a String com base em uma outra
String fixa ou expressão regular.
replace – Substitui partes da String com bae
em uma outra String fixa ou expressão regular.
Telefone – Passo 10
Chegou a hora de extrair os telefones das linhas da
tabela! Vamos extrair o telefone da primeira linha.
Extraindo dados com match
1. var regExp = /<table><tr>(<td>(d{2})sd{4,5}-
?d{4}</td>)+</tr></table>/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // null
Extraindo dados com match
1. var regExp = /<table><tr>(<td>(d{2})sd{4,5}-
?d{4}</td>)+</tr></table>/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // null
Extraindo dados com match
1. var regExp = /(d{2})sd{4,5}-?d{4}/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // '(80) 999778899'
Telefone – Passo 11
Agora, vamos extrair o telefone de todas as linhas.
Modificadores
i – Case-insensitive matching
g – Global matching
m – Multiline matching
Extraindo dados com match
1. var regExp = /(d{2})sd{4,5}-?d{4}/;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // '(80) 999778899'
Extraindo dados com match
1. var regExp = /(d{2})sd{4,5}-?d{4}/g;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // ['(80) 999778899', '(90)
99897-8877', '(70) 98767-9999']
Extraindo dados com match
1. var regExp = /(d{2})sd{4,5}-?d{4}/g;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // ['(80) 999778899', '(90)
99897-8877', '(70) 98767-9999']
Extraindo dados com match
1. var regExp = /(d{2}) /g;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // ['(80)', '(90)', '(70)']
Extraindo dados com match
1. var regExp = /d{4,5}-?d{4}/g;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.match(regExp); // ['999778899', '99897-
8877', '98767-9999']
Telefone – Passo 12
Por fim, vamos substituir todos os telefones da tabela!
Substituindo dados com replace
1. var regExp = /(d{2})sd{4,5}-?d{4}/g;
2.
3. var telefone = "<table>
4. <tr>
5. <td>(80) 999778899</td>
6. <td>(90) 99897-8877</td>
7. <td>(70) 98767-9999</td>
8. </tr>
9. </table>";
10. telefone.replace(regExp, "telefone"); // <table><tr>
11. <td>telefone</td><td>telefone</td><td>telefone...

Mais conteúdo relacionado

Mais procurados

Redes Wireless 802.11b Características y Securización
Redes Wireless 802.11b Características y SecurizaciónRedes Wireless 802.11b Características y Securización
Redes Wireless 802.11b Características y SecurizaciónConferencias FIST
 
Direccionamiento ip
Direccionamiento ipDireccionamiento ip
Direccionamiento ipKoldo Parra
 
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Francesc Perez
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadoresLucasMansueto
 
Class 5 - PHP Strings
Class 5 - PHP StringsClass 5 - PHP Strings
Class 5 - PHP StringsAhmed Swilam
 
Clases de direcciones IP
Clases de direcciones IPClases de direcciones IP
Clases de direcciones IPf_lazarte
 
Curso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanCurso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanIrontec
 
Sql – Structured Query Language
Sql – Structured Query LanguageSql – Structured Query Language
Sql – Structured Query Languagepandey3045_bit
 
Tecnicas de conversão e compressão; Redes de comunicação 1º Módulo
Tecnicas de conversão e compressão; Redes de comunicação 1º MóduloTecnicas de conversão e compressão; Redes de comunicação 1º Módulo
Tecnicas de conversão e compressão; Redes de comunicação 1º MóduloIgor Santos
 
CÁLCULO DE SUB-REDES DE FORMA PRÁTICA
CÁLCULO DE SUB-REDES DE FORMA PRÁTICACÁLCULO DE SUB-REDES DE FORMA PRÁTICA
CÁLCULO DE SUB-REDES DE FORMA PRÁTICAAugusto Cezar Pinheiro
 
Router y su funcionamiento
Router y su funcionamientoRouter y su funcionamiento
Router y su funcionamientoAlejandro Murcia
 

Mais procurados (20)

Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Redes Wireless 802.11b Características y Securización
Redes Wireless 802.11b Características y SecurizaciónRedes Wireless 802.11b Características y Securización
Redes Wireless 802.11b Características y Securización
 
Protocolos de red
Protocolos de redProtocolos de red
Protocolos de red
 
Direccionamiento ip
Direccionamiento ipDireccionamiento ip
Direccionamiento ip
 
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4
 
Sql tutorial
Sql tutorialSql tutorial
Sql tutorial
 
MySql slides (ppt)
MySql slides (ppt)MySql slides (ppt)
MySql slides (ppt)
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadores
 
SQL
SQLSQL
SQL
 
Cidr
CidrCidr
Cidr
 
Class 5 - PHP Strings
Class 5 - PHP StringsClass 5 - PHP Strings
Class 5 - PHP Strings
 
Clases de direcciones IP
Clases de direcciones IPClases de direcciones IP
Clases de direcciones IP
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Curso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanCurso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: Dialplan
 
Rfc2460 es
Rfc2460 esRfc2460 es
Rfc2460 es
 
A Estrutura da Linguagem SQL
A Estrutura da Linguagem SQLA Estrutura da Linguagem SQL
A Estrutura da Linguagem SQL
 
Sql – Structured Query Language
Sql – Structured Query LanguageSql – Structured Query Language
Sql – Structured Query Language
 
Tecnicas de conversão e compressão; Redes de comunicação 1º Módulo
Tecnicas de conversão e compressão; Redes de comunicação 1º MóduloTecnicas de conversão e compressão; Redes de comunicação 1º Módulo
Tecnicas de conversão e compressão; Redes de comunicação 1º Módulo
 
CÁLCULO DE SUB-REDES DE FORMA PRÁTICA
CÁLCULO DE SUB-REDES DE FORMA PRÁTICACÁLCULO DE SUB-REDES DE FORMA PRÁTICA
CÁLCULO DE SUB-REDES DE FORMA PRÁTICA
 
Router y su funcionamiento
Router y su funcionamientoRouter y su funcionamiento
Router y su funcionamiento
 

Destaque

Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
Test-Driven Development com JavaScript, Jasmine Karma
Test-Driven Development com JavaScript, Jasmine  KarmaTest-Driven Development com JavaScript, Jasmine  Karma
Test-Driven Development com JavaScript, Jasmine KarmaRodrigo Branas
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Expressões regulares
Expressões regularesExpressões regulares
Expressões regularesRicardo Paiva
 
Criando Filtros com AngularJS
Criando Filtros com AngularJSCriando Filtros com AngularJS
Criando Filtros com AngularJSRodrigo Branas
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJSRodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSRodrigo Branas
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJSRodrigo Branas
 
Criando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSCriando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSRodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJSRodrigo Branas
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Regular Expressions - PET presentation
Regular Expressions - PET presentationRegular Expressions - PET presentation
Regular Expressions - PET presentationFábio Albuquerque
 
E-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosE-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosJoão Gabriel Lima
 

Destaque (20)

Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
 
Test-Driven Development com JavaScript, Jasmine Karma
Test-Driven Development com JavaScript, Jasmine  KarmaTest-Driven Development com JavaScript, Jasmine  Karma
Test-Driven Development com JavaScript, Jasmine Karma
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Expressões regulares
Expressões regularesExpressões regulares
Expressões regulares
 
Expressões regulares
Expressões regularesExpressões regulares
Expressões regulares
 
Minicurso de Expressões Regulares
Minicurso de Expressões RegularesMinicurso de Expressões Regulares
Minicurso de Expressões Regulares
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
 
Criando Filtros com AngularJS
Criando Filtros com AngularJSCriando Filtros com AngularJS
Criando Filtros com AngularJS
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
 
Criando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSCriando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJS
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Regular Expressions - PET presentation
Regular Expressions - PET presentationRegular Expressions - PET presentation
Regular Expressions - PET presentation
 
E-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosE-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãos
 
Comtec 2011
Comtec 2011Comtec 2011
Comtec 2011
 

Semelhante a JavaScript - Expressões Regulares: Reconhecimento de Telefones

Expressões Regulares - Final
Expressões Regulares - FinalExpressões Regulares - Final
Expressões Regulares - FinalJackson Veroneze
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9Nando Vieira
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Danilo Pinotti
 
Testes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração seguraTestes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração seguraValberto Carneiro
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...Manuel Menezes de Sequeira
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação PythonMayron Cachina
 

Semelhante a JavaScript - Expressões Regulares: Reconhecimento de Telefones (20)

Expressões Regulares - Final
Expressões Regulares - FinalExpressões Regulares - Final
Expressões Regulares - Final
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)
 
Testes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração seguraTestes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração segura
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Tema 2 | Linguagem PHP Básico (I)
Tema 2 | Linguagem PHP Básico (I)Tema 2 | Linguagem PHP Básico (I)
Tema 2 | Linguagem PHP Básico (I)
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 
Javascript
JavascriptJavascript
Javascript
 
JS - JavaScript.pdf
JS - JavaScript.pdfJS - JavaScript.pdf
JS - JavaScript.pdf
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação Python
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 

Mais de Rodrigo Branas

Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasRodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasRodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasRodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisasRodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remotoRodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e MergingRodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJSRodrigo Branas
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 

Mais de Rodrigo Branas (18)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Selenium - WebDriver
Selenium - WebDriverSelenium - WebDriver
Selenium - WebDriver
 
Grunt
GruntGrunt
Grunt
 
Bower
BowerBower
Bower
 

JavaScript - Expressões Regulares: Reconhecimento de Telefones

  • 1. JavaScript - Expressões Regulares Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
  • 2. Rodrigo Branas rodrigo.branas@agilecode.com.br http://www.agilecode.com.br Formado em Ciências da Computação pela UFSC e MBA em Gerenciamento de Projetos pela FGV, é arquiteto de software há mais de 15 anos, especialista nas linguagens Java e JavaScript. É também autor do livro AngularJS Essentials e de diversos artigos da revista Java Magazine. Além disso, é professor e palestrante, tendo participado da formação de mais de 1.000 desenvolvedores de software e apresentado mais de 100 palestras em eventos no Brasil e no exterior. Fundador da Agile Code, uma empresa de treinamento e consultoria, atualmente é apresentador de um canal no YouTube sobre JavaScript, AngularJS e muito mais!
  • 3. Acompanhe a série Desvendando a linguagem JavaScript pelo YouTube em: http://www.youtube.com/rodrigobranas
  • 4. As expressões regulares são estruturas formadas por uma sequência de caracteres que especificam um padrão formal
  • 8. Criando uma expressão regular 1. var regExp = /<expressão regular>/;
  • 9. Criando uma expressão regular 1. var regExp = new RegExp("<expressão regular>");
  • 10. RegExp API exec – Executa a RegExp, retornando os detalhes test – Testa a RegExp, retornando true ou false
  • 11. Telefone – Passo 1 Nosso primeiro exemplo envolve o reconhecimento de um telefone simples: 9999-9999. Esse telefone será evoluído por meio de novos cenários para estimular a utilização de grupos, metacaracteres, quantificadores e muito mais!
  • 12. Executando a expressão regular 1. var regExp = /9999-9999/; 2. 3. var telefone = "9999-9999"; 4. regExp.exec(telefone); // ['9999-9999', index: 0, input: '9999-9999']
  • 13. Testando a expressão regular 1. var regExp = /9999-9999/; 2. 3. var telefone = "9999-9999"; 4. regExp.test(telefone); // true
  • 14. Telefone – Passo 2 Evoluímos nosso primeiro exemplo e agora o telefone tem código de área: (48) 9999-9999, como fazer para reconhecê-lo?
  • 15. Testando a expressão regular 1. var regExp = /9999-9999/; 2. 3. var telefone = "9999-9999"; 4. regExp.test(telefone); // true
  • 16. Testando a expressão regular 1. var regExp = /(90) 9999-9999/; 2. 3. var telefone = "(90) 9999-9999"; 4. regExp.test(telefone); // false
  • 17. Escapando caracteres especiais - A barra é utilizada antes de caracteres especiais, com o objetivo de escapá-los.
  • 18. Escapando caracteres especiais 1. var regExp = /(90) 9999-9999/; 2. 3. var telefone = "(90) 9999-9999"; 4. regExp.test(telefone); // false
  • 19. Escapando caracteres especiais 1. var regExp = /(90) 9999-9999/; 2. 3. var telefone = "(90) 9999-9999"; 4. regExp.test(telefone); // true
  • 20. Telefone – Passo 3 Vamos evoluir novamente e agora, no nosso terceiro exemplo, temos que fazer com que o telefone seja reconhecido únicamente, não permitindo outros caracteres antes e depois!
  • 21. Iniciando e finalizando com um determinado caractere ^ - Inicia com um determinado caractere $ - Finaliza com um determinado caractere
  • 22. Lidando com caracteres antes e depois 1. var regExp = /(90) 9999-9999/; 2. 3. var telefone = "Ligue para (90) 9999-9999, tratar com João"; 4. regExp.test(telefone); // true
  • 23. Lidando com caracteres antes e depois 1. var regExp = /^(90) 9999-9999$/; 2. 3. var telefone = "Ligue para (90) 9999-9999, tratar com João"; 4. regExp.test(telefone); // false
  • 24. Lidando com caracteres antes e depois 1. var regExp = /^(90) 9999-9999$/; 2. 3. var telefone = "(90) 9999-9999"; 4. regExp.test(telefone); // true
  • 25. Telefone – Passo 4 Chegou a hora de aceitar qualquer número de telefone, para isso precisamos flexibilizar a expressão regular por meio de grupos.
  • 26. Grupos de caracteres [abc] – Aceita qualquer caractere dentro do grupo, nesse caso a, b e c [^abc] – Não aceita qualquer caractere dentro do grupo, nesse caso a, b ou c [0-9] – Aceita qualquer caractere entre 0 e 9 [^0-9] – Não aceita qualquer caractere entre 0 e 9
  • 27. Utilizando grupos de caracteres 1. var regExp = /^(90) 9999-9999$/; 2. 3. var telefone = "(90) 9999-9999"; 4. regExp.test(telefone); // true
  • 28. Utilizando grupos de caracteres 1. var regExp = /^(90) 9999-9999$/; 2. 3. var telefone = "(80) 9977-8899"; 4. regExp.test(telefone); // false
  • 29. Utilizando grupos de caracteres 1. var regExp = /^([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0- 9][0-9][0-9][0-9]$/; 2. 3. var telefone = "(80) 9977-8899"; 4. regExp.test(telefone); // true
  • 30. Telefone – Passo 5 Não é muito grupo? Para evitar a repetição exagerada de padrões em uma expressão regular, podemos utilizar quantificadores.
  • 31. Quantificadores – Parte 1 Os quantificadores podem ser aplicados a caracteres, grupos, conjuntos ou metacaracteres. {n} – Quantifica um número específico {n,} – Quantifica um número mínimo {n,m} – Quantifica um número mínimo e um número máximo
  • 32. Utilizando quantificadores 1. var regExp = /^([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0- 9][0-9][0-9][0-9]$/; 2. 3. var telefone = "(80) 9977-8899"; 4. regExp.test(telefone); // true
  • 33. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4}-[0-9]{4}$/; 2. 3. var telefone = "(80) 9977-8899"; 4. regExp.test(telefone); // true
  • 34. Telefone – Passo 6 E se for necessário aceitar números com 8 ou 9 dígitos? Podemos utilizar um quantificador para especificar um determinado intervalo.
  • 35. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4}-[0-9]{4}$/; 2. 3. var telefone = "(80) 9977-8899"; 4. regExp.test(telefone); // true
  • 36. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4}-[0-9]{4}$/; 2. 3. var telefone = "(80) 99977-8899"; 4. regExp.test(telefone); // false
  • 37. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-[0-9]{4}$/; 2. 3. var telefone = "(80) 99977-8899"; 4. regExp.test(telefone); // true
  • 38. Telefone – Passo 7 E se o hífen for opcional? É muito comum que se escreva sem hífen! Podemos utilizar um quantificador para torná-lo opcional.
  • 39. Quantificadores - Parte 2 Os quantificadores podem ser aplicados a caracteres, grupos, conjuntos ou metacaracteres. ? – Zero ou um * – Zero ou mais + – Um ou mais
  • 40. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-[0-9]{4}$/; 2. 3. var telefone = "(80) 99977-8899"; 4. regExp.test(telefone); // true
  • 41. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-[0-9]{4}$/; 2. 3. var telefone = "(80) 999778899"; 4. regExp.test(telefone); // false
  • 42. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/; 2. 3. var telefone = "(80) 999778899"; 4. regExp.test(telefone); // true
  • 43. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/; 2. 3. var telefone = "(80) 999778899"; 4. regExp.test(telefone); // true
  • 44. Telefone – Passo 8 E se o telefone agora estiver em uma estrutura de tabela, como fazer para reconhecer cada linha?
  • 45. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // false
  • 46. Utilizando quantificadores 1. var regExp = /^([0-9]{2}) [0-9]{4,5}-?[0-9]{4}$/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // false
  • 47. Utilizando quantificadores 1. var regExp = /([0-9]{2}) [0-9]{4,5}-?[0-9]{4}/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // false
  • 48. Utilizando quantificadores 1. var regExp = /<table><tr>(<td>([0-9]{2}) [0-9]{4,5}- ?[0-9]{4}</td>)+</tr></table>/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // true
  • 49. Telefone – Passo 9 Em muitos casos, é possível substituir os grupos por metacaracteres específicos!
  • 50. Metacaracteres . – Representa qualquer caractere w – Representa o conjunto [a-zA-Z0-9_] W – Representa o conjunto [^a-zA-Z0-9_] d – Representa o conjunto [0-9] D – Representa o conjunto [^0-9] s – Representa um espaço em branco S – Representa um não espaço em branco n – Representa uma quebra de linha t – Representa um tab
  • 51. Utilizando metacaracteres 1. var regExp = /<table><tr>(<td>([0-9]{2}) [0-9]{4,5}- ?[0-9]{4}</td>)+</tr></table>/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // true
  • 52. Utilizando metacaracteres 1. var regExp = /<table><tr>(<td>([0-9]{2}) [0-9]{4,5}- ?[0-9]{4}</td>)+</tr></table>/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // true
  • 53. Utilizando metacaracteres 1. var regExp = /<table><tr>(<td>(d{2})sd{4,5}- ?d{4}</td>)+</tr></table>/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. regExp.test(telefone); // true
  • 54. String API match – Executa uma busca na String e retorna um array contendo os dados encontrados, ou null. split – Divide a String com base em uma outra String fixa ou expressão regular. replace – Substitui partes da String com bae em uma outra String fixa ou expressão regular.
  • 55. Telefone – Passo 10 Chegou a hora de extrair os telefones das linhas da tabela! Vamos extrair o telefone da primeira linha.
  • 56. Extraindo dados com match 1. var regExp = /<table><tr>(<td>(d{2})sd{4,5}- ?d{4}</td>)+</tr></table>/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // null
  • 57. Extraindo dados com match 1. var regExp = /<table><tr>(<td>(d{2})sd{4,5}- ?d{4}</td>)+</tr></table>/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // null
  • 58. Extraindo dados com match 1. var regExp = /(d{2})sd{4,5}-?d{4}/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // '(80) 999778899'
  • 59. Telefone – Passo 11 Agora, vamos extrair o telefone de todas as linhas.
  • 60. Modificadores i – Case-insensitive matching g – Global matching m – Multiline matching
  • 61. Extraindo dados com match 1. var regExp = /(d{2})sd{4,5}-?d{4}/; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // '(80) 999778899'
  • 62. Extraindo dados com match 1. var regExp = /(d{2})sd{4,5}-?d{4}/g; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // ['(80) 999778899', '(90) 99897-8877', '(70) 98767-9999']
  • 63. Extraindo dados com match 1. var regExp = /(d{2})sd{4,5}-?d{4}/g; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // ['(80) 999778899', '(90) 99897-8877', '(70) 98767-9999']
  • 64. Extraindo dados com match 1. var regExp = /(d{2}) /g; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // ['(80)', '(90)', '(70)']
  • 65. Extraindo dados com match 1. var regExp = /d{4,5}-?d{4}/g; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.match(regExp); // ['999778899', '99897- 8877', '98767-9999']
  • 66. Telefone – Passo 12 Por fim, vamos substituir todos os telefones da tabela!
  • 67. Substituindo dados com replace 1. var regExp = /(d{2})sd{4,5}-?d{4}/g; 2. 3. var telefone = "<table> 4. <tr> 5. <td>(80) 999778899</td> 6. <td>(90) 99897-8877</td> 7. <td>(70) 98767-9999</td> 8. </tr> 9. </table>"; 10. telefone.replace(regExp, "telefone"); // <table><tr> 11. <td>telefone</td><td>telefone</td><td>telefone...

Notas do Editor

  1. Desmotivação
  2. Desmotivado
  3. Desmotivado
  4. Desmotivação
  5. Desmotivação
  6. Desmotivação
  7. Desmotivação
  8. Desmotivação
  9. Desmotivação
  10. Desmotivação
  11. Desmotivação
  12. Desmotivação
  13. Desmotivação
  14. Desmotivação
  15. Desmotivação
  16. Desmotivação
  17. Desmotivação
  18. Desmotivação
  19. Desmotivação
  20. Desmotivação
  21. Desmotivação
  22. Desmotivação
  23. Desmotivação
  24. Desmotivação
  25. Desmotivação
  26. Desmotivação
  27. Desmotivação
  28. Desmotivação
  29. Desmotivação
  30. Desmotivação
  31. Desmotivação
  32. Desmotivação
  33. Desmotivação
  34. Desmotivação
  35. Desmotivação
  36. Desmotivação
  37. Desmotivação
  38. Desmotivação
  39. Desmotivação
  40. Desmotivação
  41. Desmotivação
  42. Desmotivação
  43. Desmotivação
  44. Desmotivação
  45. Desmotivação
  46. Desmotivação
  47. Desmotivação
  48. Desmotivação
  49. Desmotivação
  50. Desmotivação
  51. Desmotivação
  52. Desmotivação
  53. Desmotivação
  54. Desmotivação
  55. Desmotivação
  56. Desmotivação
  57. Desmotivação
  58. Desmotivação
  59. Desmotivação
  60. Desmotivação
  61. Desmotivação
  62. Desmotivação
  63. Desmotivação
  64. Desmotivação
  65. Desmotivação
  66. Desmotivação
  67. Desmotivação