Validação com RegEx.

9 views
Skip to first unread message

ilha

unread,
Sep 2, 2010, 1:01:23 PM9/2/10
to Expressões regulares
Pessoal, sou novo aqui no Expressões regulares e se alguém puder me
ajudar, agradeço!

Estou trabalhando em um projeto em C# e me deparei com o seguinte
problema: Tenho de realizar a leitura de um arquivo texto que possui
conteúdos separados por colchetes. Cada conteúdo dentro de um colchete
possui regras específicas. O meu problema está na situação onde esse
conteúdo não é preenchido. Como cada linha do arquivo possui a mesma
quantidade de caracteres e, consequentemente, cada campo entre os
colchetes também, tenho de validar esse conteúdo quando não está
preenchido, ou seja, quando está com o conteúdo todo com espaços em
branco (para campos do tipo caractere) ou preenchido de zeros (para
campos do tipo numérico).

Um exemplo de regra seria um campo numérico que deve possuir no mínimo
6 números. Para isso, simples, segue o pattern abaixo:

\[[\d]{6}\]

Mas e para unir isso à situação a qual o usuário envia somente zeros?
Tentei diversas formas e não obtive sucesso. Alguém teria uma idéia?

PS.: Para contribuir de alguma maneira com o grupo segue um site de
testes de regular expression (mesmo que já seja conhecido):
http://regexpal.com/

Obrigado!


caio

unread,
Sep 2, 2010, 1:25:55 PM9/2/10
to expressoes...@googlegroups.com
Seja bem vindo a lista!

Vejamos,


Um exemplo de regra seria um campo numérico que deve possuir no mínimo
6 números.

\d{6,}


Mas e para unir isso à situação a qual o usuário envia somente zeros?
 
(\d{6,}|0*)


Tenho de realizar a leitura de um arquivo texto que possui
conteúdos separados por colchetes. Cada conteúdo dentro de um colchete
possui regras específicas. O meu problema está na situação onde esse
conteúdo não é preenchido.

\[(\d{6,}|0+)?\]


Caio Ariede
http://caioariede.com/



2010/9/2 ilha <ayslan...@gmail.com>:
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Expressões regulares" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para expressoes...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para expressoes-regul...@googlegroups.com.
> Para obter mais opções, visite esse grupo em http://groups.google.com/group/expressoes-regulares?hl=pt-BR.
>
>

Gustavo Dutra

unread,
Sep 2, 2010, 2:22:42 PM9/2/10
to expressoes...@googlegroups.com
Não ser preenchido, Caio, eu entendi por ser preenchido por espaço ou zero.

Tente algo mais ou menos assim: \[(\d{6,}|\w+\s*\w*|\s{6,})\]

--
Att,
Gustavo Dutra -
www.gustavodutra.com


2010/9/2 caio <caio....@gmail.com>

ilha

unread,
Sep 2, 2010, 1:52:19 PM9/2/10
to Expressões regulares
Caio, ainda não é isso.

Da maneira como você colocou eu poderia colocar quantos zeros eu
quisesse dentro dos colchetes, e na realidade eu tenho de gerar um
erro caso os 6, e tão somente os 6 dígitos dentro dos colchetes sejam
zeros.
Exemplo:

[123456] -> Válido.
[012085] -> Válido.
[000005] -> Válido.
[000000] -> Inválido.
[00000a] -> Inválido.
[é02ài9] -> Inválido.

Obrigado por tentar ajudar.



On 2 set, 14:25, caio <caio.ari...@gmail.com> wrote:
> Seja bem vindo a lista!
>
> Vejamos,
>
> Um exemplo de regra seria um campo numérico que deve possuir no mínimo
>
> > 6 números.
>
> \d{6,}
>
> Mas e para unir isso à situação a qual o usuário envia somente zeros?
>
>
>
> (\d{6,}|0*)
>
> Tenho de realizar a leitura de um arquivo texto que possui
>
> > conteúdos separados por colchetes. Cada conteúdo dentro de um colchete
> > possui regras específicas. O meu problema está na situação onde esse
> > conteúdo não é preenchido.
>
> \[(\d{6,}|0+)?\]
>
> Caio Ariedehttp://caioariede.com/
>
> 2010/9/2 ilha <ayslanjen...@gmail.com>:
> expressoes-regul...@googlegroups.com<expressoes-regulares%2Bun subs...@googlegroups.com>
> .> Para obter mais opções, visite esse grupo em
>
> http://groups.google.com/group/expressoes-regulares?hl=pt-BR.
>
>
>
>

ilha

unread,
Sep 2, 2010, 2:28:40 PM9/2/10
to Expressões regulares
Não ainda... :)

A quantidade máxima dentro do campo é de 6 caracteres. Da maneira como
foi feito aceita qualquer quantidade, fora que permite todos os
caracteres como zero.



On 2 set, 15:22, Gustavo Dutra <gustavo...@gmail.com> wrote:
> Não ser preenchido, Caio, eu entendi por ser preenchido por espaço ou zero.
>
> Tente algo mais ou menos assim: \[(\d{6,}|\w+\s*\w*|\s{6,})\]
>
> --
> Att,
> Gustavo Dutra -www.gustavodutra.com
>
> 2010/9/2 caio <caio.ari...@gmail.com>
>
>
>
> > Seja bem vindo a lista!
>
> > Vejamos,
>
> > Um exemplo de regra seria um campo numérico que deve possuir no mínimo
> >> 6 números.
>
> > \d{6,}
>
> > Mas e para unir isso à situação a qual o usuário envia somente zeros?
>
> > (\d{6,}|0*)
>
> > Tenho de realizar a leitura de um arquivo texto que possui
> >> conteúdos separados por colchetes. Cada conteúdo dentro de um colchete
> >> possui regras específicas. O meu problema está na situação onde esse
> >> conteúdo não é preenchido.
>
> > \[(\d{6,}|0+)?\]
>
> > Caio Ariede
> >http://caioariede.com/
>
> > 2010/9/2 ilha <ayslanjen...@gmail.com>:
> > expressoes-regul...@googlegroups.com<expressoes-regulares%2Bun subs...@googlegroups.com>
> > .
> > > Para obter mais opções, visite esse grupo em
> >http://groups.google.com/group/expressoes-regulares?hl=pt-BR.
>
> >  --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "Expressões
> > regulares" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para
> > expressoes...@googlegroups.com.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > expressoes-regul...@googlegroups.com<expressoes-regulares%2Bun subs...@googlegroups.com>
> > .

Felipe Pena

unread,
Sep 2, 2010, 6:01:37 PM9/2/10
to expressoes...@googlegroups.com
Em 2 de setembro de 2010 15:28, ilha <ayslan...@gmail.com> escreveu:
Não ainda... :)

A quantidade máxima dentro do campo é de 6 caracteres. Da maneira como
foi feito aceita qualquer quantidade, fora que permite todos os
caracteres como zero.


Se a quantidade de números é fixa, e você tem apenas que verificar se não é 000000, basta usar um negative lookahead.

\[(?!000000)\d{6}\]

Leia-se: casar '[' somente se a seguir não forem seis zeros, e casa seis números seguidos de ]
 
--
Regards,
Felipe Pena

Ayslan

unread,
Sep 2, 2010, 6:55:56 PM9/2/10
to expressoes...@googlegroups.com
Funcionou, Felipe!

Eu vi essa implementação que você sugeriu e tentei desenvolver de acordo com a minha necessidade, mas não havia entendido direito como ela funcionava.
Faz pouco tempo que mexo com Regular Expression e taí, aprendi mais uma!

Muitíssimo obrigado!



2010/9/2 Felipe Pena <feli...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Expressões regulares" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para expressoes...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para expressoes-regul...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages