comandos dot .net.pdf

Upload: jmarcelloc

Post on 17-Oct-2015

121 views

Category:

Documents


2 download

TRANSCRIPT

  • Gostei (3) (0)

    post favorito comentrios

    Uma expresso regular (ER) um mtodo formal de se especificar um padro de texto, simplificando umpouco mais, as expresses regulares so strings especialmente formatadas, usadas para localizar padres no texto,e podem ser teis durante a validao informaes, para que os dados estejam em um formato especfico.

    Nesse artigo voc aprender a utilizar e criar expresses regulares no AspNet C#. Tambm tomar conhecimentodo significado de cada expresso, bem como o conjunto de caracteres usado na elaborao de uma expressoregular. Espero vocs no prximo artigo. Boa leitura a todos e at a prxima.

    Requisitos Necessrios

    Para uma melhor compreenso do artigo indispensvel que o leitor tenha conhecimento AspNet C#. Almdisso disso algumas ferramentas so necessrias.

    Visual Studio 2005/2008 ou Visual Web Developer 2005/2008.

    Conceitos Bsicos

    A maioria dos formalismos provm pelo menos trs operaes para construir expresses regulares. (WIKIPEDIA)

    A primeira delas a alternncia, em que uma barra vertical (|) separa alternativas. Por exemplo, psicadlico|psicodlicopode casar "psicadlico" ou "psicodlico". A segunda operao o agrupamento, em que parnteses ((, )) so usadospara definir o escopo e a precedncia de operadores, entre outros usos. Por exemplo, psicadlico|psicodlico epsic(a|o)dlico so equivalentes e ambas descrevem "psicadlico" e "psicodlico". Por fim, a terceira operao aquantificao (ou repetio). Um quantificador aps um token (como um caractere) ou um agrupamento especifica aquantidade de vezes que o elemento precedente pode ocorrer. Os quantificadores mais comuns so ?, * e +. O pontode interrogao indica que h zero ou uma ocorrncia do elemento precedente. Por exemplo, ac?o casa tanto "aco"quanto "ao". J o asterisco indica que h zero ou mais ocorrncias do elemento precedente. Por exemplo, ab*c casa

    0 Curtir 42

    Bem vindo a DevMedia! LOGIN: SENHA: Esqueci minha senha Cadastre-se

    Tecnologias Revistas Cursos Pocket videos DevWare Frum Servios Publicar Comprar

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    1 de 15 24/09/2013 12:40

  • "ac", "abc", "abbc", "abbbc", e assim por diante. Por fim, o sinal de adio indica que h uma ou mais ocorrncias doelemento precedente. Por exemplo, ab+c casa "abc", "abbc", "abbbc", e assim por diante, mas no "ac".(WIKIPEDIA)

    Essas construes podem ser combinadas arbitrariamente para formar expresses complexas, assim comoexpresses aritmticas com nmeros e operaes de adio, subtrao, multiplicao e diviso. De forma geral, hdiversas expresses regulares para descrever um mesmo conjunto de cadeias de caracteres. A sintaxe exata daexpresso regular e os operadores disponveis variam entre as implementaes. ( WIKIPEDIA)

    Tabela dos MetaCaracteres

    Busca posicionada

    Smbolo Descrio

    ^ Busca somente no incio da string.

    $ Busca somente no fim da string.

    \b Encontra em qualquer parte da string.

    \B Encontra qualquer parte que no esteja limitada.

    Literais

    Smbolo Descrio

    Alfa-numrica Todos os caracteres alfabticos e numerais se encontram literalmente.

    \\ Encontra o caractere de escape.

    Classes de Caracteres

    Smbolo Descrio

    [abc] Encontra qualquer caractere que estiver dentro do grupo. Voc pode usar hfen para denotarescala. Por Exemplo. [a-z] encontra qualquer letra do alfabeto. [0-9] encontra qualquer dgito.

    [^abc]

    Encontra qualquer caractere que no estiver dentro do grupo. O circunflexo indica que nenhumcaractere deve estar na string.Observao: O circunflexo usado dentro da classe de caractere diferente do que denota o incioda string, no se confundam. A negao aqui s permitida dentro dos sinais.

    . (Ponto). Encontra qualquer caractere exceto o caractere de nova linha ou terminador de linhaUnicode.

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    2 de 15 24/09/2013 12:40

  • \w Encontra qualquer caractere alfanumrico incluindo underscore. Equivalente a [a-zA-Z0-9_].

    \W Encontra qualquer caractere que no se encontra na classe dos alfanumricos. Equivalente a[^a-zA-Z0-9_].

    \d Encontra qualquer dgito. Equivalente a [0-9].

    \D Encontra qualquer caractere que no seja um dgito. Equivalente a [^0-9].

    \s Encontra qualquer caractere que equivale a um espao. Equivalente a [ abc].

    \S Encontra qualquer caractere que no equivale a um espao. Equivalente a [^abc].

    Repetio

    Smbolo Descrio

    {x} Encontra exatamente x ocorrncia na expresso regular.

    {x,} Encontra x ou mais ocorrncias na expresso regular.

    {x,y} Encontra x para y numero de ocorrncias na expresso regular.

    ? Encontra zero ou nenhuma ocorrncia. Equivalente a {0,1}.

    * Encontra zero ou mais ocorrncias. Equivalente a {0,}.

    + Encontra uma ou mais ocorrncias. Equivalente a {1,}.

    Alternao & Agrupamento

    Smbolo Descrio

    ( ) Agrupamento de caracteres para criar uma clusula de condio. Pode estar aninhado.

    | Combina clusulas de condies dentro de uma expresso regular e ento encontraqualquer uma das clusulas. Similar expresso "OR".

    BackReferences

    Smbolo Descrio

    ( )\n Encontra uma clusula entre parnteses. n o nmero de clusulas para aesquerda da backReference.

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    3 de 15 24/09/2013 12:40

  • Conhecendo o Espao de Nomes System.Text.RegularExpressions

    A plataforma .NET fornece vrias classes para ajudar os desenvolvedores a reconhecerem e manipularemexpresses regulares. A classe Regex (espao de nomes System.Text.RegularExpressions) representa umaexpresso regular imutvel. Ela contm mtodos estticos que permitem o uso da classe Regex sem instanciarexplicitamente objetos dessa classe. A classe Match representa os resultados de uma operao de correspondnciacom uma expresso regular. (DEITEL, 2006)

    A classe Regex fornece o mtodo Match, que retorna um objeto da classe Match representando uma nicacorrespondncia com uma expresso regular. Regex tambm fornece o mtodo Matches, que retorna todas ascorrespondncias de uma expresso regular em uma string arbitrria e retorna um objeto MatchCollection, ou seja,um conjunto de objetos Match. (DEITEL, 2006)

    Agora que j aprendemos sobre Expresses Regulares na teoria, vamos ver na prtica como isso funciona ecomo pode ser utilizado em uma aplicao Web. Abra o Visual Studio 2005/2008 ou Web Developer 2005/2008, crieum novo Web Site e d o nome de ExpressoesRegulares.

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    4 de 15 24/09/2013 12:40

  • Abra o arquivo Default.aspx e adicione um controle Label e um controle Button ao formulrio. Para ocontrole Button, adicione o evento Button1_Click conforme a listagem_01 apresentada abaixo.

    asp:Label>td>

    tr>

    td>

    tr>

    Testar:td>

    td>

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    5 de 15 24/09/2013 12:40

  • td>

    tr>

    table>

    form>

    Cdigo exemplo: listagem_01

    Depois de j ter concludas as alteraes no formulrio, abra o arquivo Default.aspx.cs e adicione oseguinte cdigo, conforme a listagem_02 apresentada abaixo.

    protected void Button1_Click(object sender, EventArgs e)

    {

    //Expresso regular que aceita somente nmeros inteiros

    string numero = @"^\d+$";

    //ou

    string numero2 = @"^[0-9]+$";

    Match match = Regex.Match("10", numero2);

    Label1.Text = "Nmero inteiro invlido.";

    if (match.Success)

    {

    Label1.Text = "Nmero inteiro vlido.";

    }

    //Expresso regular que aceita nmeros reais

    string numeroReal = @"^\d+?(.|,\d+)$";

    //ou

    string numeroReal2 = @"^[0-9]+?(.|,[0-9]+)$";

    match = Regex.Match("10.456", numeroReal2);

    if (match.Success)

    {

    Label1.Text += "Nmero real vlido.";

    }

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    6 de 15 24/09/2013 12:40

  • else

    {

    Label1.Text += "Nmero real invlido.";

    }

    //Expressao regular que valida email

    string email = @"^([\w\-]+\.)*[\w\- ]+@([\w\- ]+\.)+([\w\-]{2,3})$";

    match = Regex.Match("[email protected]", email);

    if (match.Success)

    {

    Label1.Text += "Email vlido.";

    }

    else

    {

    Label1.Text += "Email invlido.";

    }

    //Expresso regular que valida telefone

    string telefone = @"^\d{2}-\d{4}-\d{4}$";

    //ou

    string telefone2 = @"^[0-9]{2}-[0-9]{4}-[0-9]{4}$";

    match = Regex.Match("14-1234-4567", telefone2);

    if (match.Success)

    {

    Label1.Text += "Telefone vlido.";

    }

    else

    {

    Label1.Text += "Telefone invlido.";

    }

    //Expressao regular que valida cpf

    string cpf = @"^\d{3}\.?\d{3}\.?\d{3}\-?\d{2}$";

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    7 de 15 24/09/2013 12:40

  • match = Regex.Match("111.111.111-11", cpf);

    if (match.Success)

    {

    Label1.Text += "CPF vlido.";

    }

    else

    {

    Label1.Text += "CPF invlido.";

    }

    //Expressao regular que valida cnpj

    string cnpj = @"^\d{3}.?\d{3}.?\d{3}/?\d{3}-?\d{2}$";

    match = Regex.Match("111.111.111/111-11", cnpj);

    if (match.Success)

    {

    Label1.Text += "CNPJ vlido.";

    }

    else

    {

    Label1.Text += "CNPJ invlido.";

    }

    //Expressao regular que valida data

    string data = @"^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$";

    match = Regex.Match("01/01/2000", data);

    if (match.Success)

    {

    Label1.Text += "Data vlida.";

    }

    else

    {

    Label1.Text += "Data invlida.

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    8 de 15 24/09/2013 12:40

  • ";

    }

    //Expressao regular que valida cep

    string cep = @"^\d{5}\-?\d{3}$";

    match = Regex.Match("09740-001", cep);

    if (match.Success)

    {

    Label1.Text += "CEP vlido.";

    }

    else

    {

    Label1.Text += "Cep invlido.";

    }

    //Expressao regular que valida url

    string url = @"^((http)|(https)|(ftp)):\/\/([\- \w]+\.)+\w{2,3}(\/ [%\-\w]+(\.\w{2,})?)*$";

    match = Regex.Match("http://neocanvas.aspbrasil.net", url);

    if (match.Success)

    {

    Label1.Text += "URL vlida.";

    }

    else

    {

    Label1.Text += "URL invlida.";

    }

    //Expressao regular que valida ip

    string ip = @"^\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b$";

    match = Regex.Match("127.0.0.0", ip);

    if (match.Success)

    {

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    9 de 15 24/09/2013 12:40

  • Label1.Text += "IP vlido.";

    }

    else

    {

    Label1.Text += "IP invlido.";

    }

    //Expressao regular que valida nomes

    string nome = @"^([\'\.\^\~\\`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\aA-zZ]+)+((\s[\'\.\^\~\\`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\aA-zZ]+)+)?$";

    //ou

    string nome2 = @"^[aA-zZ]+((\s[aA-zZ]+)+)?$";

    match = Regex.Match("werison aparecido fernandes", nome2);

    if (match.Success)

    {

    Label1.Text += "Nome vlido.";

    }

    else

    {

    Label1.Text += "Nome invlido.";

    }

    }

    Antes que voc queira comear a testar o cdigo acima, vamos entender o que faz cada um dos mtodosutilizados, bem como as expresses regulares construdas.

    Regex.Match(string input, string pattern);

    @param = string input: O valor de entrada a ser validado. Exemplo: cep:09841-000.

    @param= string pattern: A expresso a ser testada. Exemplo: cep: @"^\d{5}\-?\d{3}$".

    @return= Match: Objeto da classe Match que define um conjunto de mtodos e atributos para a manipulao deexpresses regulares.

    Regex.Match(string input, string pattern);

    match.Success

    @return= bool: Retorna um valor booleano indicando se o teste Match foi bem-sucedido. Exemplo: true.

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    10 de 15 24/09/2013 12:40

  • Entendendo as Expresses Regulares

    string numero = @"^\d+$"

    ^: Indica o comeo da linha. Caso seja omitido esse caractere, ser permitida a entrada de qualquer tipo decaractere no incio da expresso. Exemplo: w\?;.,io12306, nesse caso seria uma expresso vlida.

    \d+: Permite somente nmeros. A barra invertida escapa o caractere d. Caso seja omitida, significa que estarpermitindo sucessivamente vrias ocorrncias da letra d e no nmeros. Exemplo: dddd.

    +: Permite vrias ocorrncias de um caractere ou pelo menos uma ocorrncia.

    $: indica o final da linha. Caso seja omitido esse caractere, ser permitida a entrada de qualquer tipo de caractereno final da expresso. Exemplo:12345we.,?/;t, nesse caso seria uma expresso vlida.

    //ou

    string numero2 = @"^[0-9]+$"

    A diferena entre a primeira expresso e a segunda a ocorrncia da seqncia de caracteres [0-9].

    [0-9]: Tem o mesmo efeito que \d, ou seja, permite apenas nmeros. Nesse caso pode ser informadoexplicitamente todos os caracteres vlidos na expresso. Exemplo: [0,1,2,3,4,5,6,7,8,9]. Pode ser informadoimplicitamente como a expresso que estamos estudando [0-9]. O sinal indica a condio de sequncia, onde informado o primeiro e o tlimo caractere da sequncia e o sistema se encarrega de mapear o intervalo.

    string numeroReal = @"^\d+?(.|,\d+)$"

    //ou

    string numeroReal2 = @"^[0-9]+?(.|,[0-9]+)$"

    ?: Indica que tudo que estiver depois na expresso opcional.

    (.|,[0-9]+): Assim como na matemtica os parnteses servem para agrupar expresses.

    .|,: O pipe na expresso tem o significado do ou lgico, ou seja, tanto o que tiver a direita ou a esquerda daexpresso pode ocorrer, sendo uma ocorrncia por vez.

    string email = @"^([\w\-]+\.)*[\w\- ]+@([\w\- ]+\.)+([\w\-]{2,3})$"

    \w: Permite a entrada de qualquer caratere alfanumrico incluindo underscore.

    \-: Permite a entrada do caractere -.

    \.: Permite a entrada do caractere ..

    *: Permite zero ou vrias ocorrncias de tudo que est a esquerda desse caractere na expresso.

    @: Obriga a ocorrncia desse caractere na expresso.

    {2,3}: Permite x ocorrncias de tudo que est a esquerda desse conjunto na expresso, onde x o nmeroindicado entre {}, nesse caso 2 ou 3.

    string telefone = @"^\d{2}-\d{4}-\d{4}$";

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    11 de 15 24/09/2013 12:40

  • //ou

    string telefone2 = @"^[0-9]{2}-[0-9]{4}-[0-9]{4}$";

    No h nada diferente do que j foi explicado anteriormente.

    string cpf = @"^\d{3}\.?\d{3}\.?\d{3}\-?\d{2}$";

    No h nada diferente do que j foi explicado anteriormente.

    string cnpj = @"^\d{3}.?\d{3}.?\d{3}/?\d{3}-?\d{2}$";

    No h nada diferente do que j foi explicado anteriormente.

    string data = @"^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$";

    0[1-9]: Permite a ocorrncia do caractere 0 seguido de um caratere que pode variar de 1-9. Exemplo: 01, 09.

    [12]\d: Permite a ocorrncia de do caractere 1 ou 2 [12] seguido de um nmero que pode variar de 0-9.

    \/: Escapa o caractere barra normal.

    1[0-2]): Permite a ocorrncia do caractere 1 seguido dos caracteres 0, 1, 2. Uma ocorrncia por vez.

    0[13-9]: Permite a ocorrncia do caractere 0 seguido dos caractes 1 ou 3, ou ainda a sequncia dos caracteres quepodem variar de 4-9. Exemplo: 01, 03, 04; 09 so aceitos. Observao 02 no ser aceito.

    string cep = @"^\d{5}\-?\d{3}$";

    No h nada diferente do que j foi explicado anteriormente.

    string url = @"^((http)|(https)|(ftp)):\/\/([\- \w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*$";

    No h nada diferente do que j foi explicado anteriormente.

    string nome = "^([\'\.\^\~\\`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\aA-zZ]+)+((\s[\'\.\^\~\\`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\aA-zZ]+)+)?$";

    //ou

    string nome2 = @"^[aA-zZ]+((\s[aA-zZ]+)+)?$"

    "([\'\.\^\~\\`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\aA-zZ]+): Permite a ocorrnciade todas as letras do alfabeto em caixa alta e em caixa baixa (aA-zZ). Os demais caracteres na expresso causam aexcesso, que neste caso se faz necessrio porque a expresso (aA-zZ), no permite caracteres acentuados.

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    12 de 15 24/09/2013 12:40

  • \s: Permite o caractere espao na expresso.

    Agora que j entendemos o funcionamento de cada uma das expresses apresentadas, vamos testar nossaaplicao. Voc pode ainda entrar com novos valores, para testar novas situaes ainda no testar. Rode aaplicao e veja os resultados. Observe se voc obteve os mesmos resultados apresentados na figura abaixo.

    Espero que vocs tenham gostado desse artigo. Um grande abrao a todos e at a prxima.

    Referncias Bibliogrficas

    [DEITEL P., DEITEL J. 2006] DEITEL P., DEITEL J. C# Como Programar. So Paulo: Editora Person Makron books,

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    13 de 15 24/09/2013 12:40

  • Gostei (3) (0)

    2006. P. 572

    [WIKIPEDIA] WIKIPEDIA, http://pt.wikipedia.org/wiki/Express%C3%A3o_regular, acessado em 04/03/2009.

    Werison Aparecido FernandesSou Analista de Sistemas, formado em Cincia da Computao. Trabalho a mais de dois anos com AspNet. Anteriormente trabalhei com as tecnologias Java e PHP. Email:

    [email protected]

    2 COMENTRIOS

    Juan Gonzales Torres

    formatao

    [h +1 ano] - Responder

    [autor] Werison Aparecido Fernandes

    Eu vou corrgi-la assim que possvel. Obrigado.

    [h +1 ano] - Responder

    +.net

    Publicidade

    Servios

    Inclua um comentrio

    Adicionar aos Favoritos

    Marcar como lido/assistido

    Incluir anotao pessoal

    Verso para impresso

    0 Curtir 42

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    14 de 15 24/09/2013 12:40

  • DevMedia | Anuncie | Fale conosco

    Hospedagem web por Porta 80 Web Hosting

    2013 - Todos os Direitos Reservados a web-03

    DevMedia

    Curtir

    13.699 pessoas curtiram DevMedia.

    Pl i i l d F b k

    Validando Formulrios Usando Regular Expression http://www.devmedia.com.br/validando-formularios-usando-regular-e...

    15 de 15 24/09/2013 12:40