GUJ
Notícias, artigos e o maior fórum brasileiro sobre Java
home
fórum
notícias
tópicos recentes
empregos
artigos
Bem-vindo ao GUJ.
Crie seu login
, ou digite-o para logar no site.
Usuário:
Senha:
Tratar exceções em regular expressions
Índice dos Fóruns
»
Assuntos gerais (Off-topic)
Autor
Mensagem
05/10/2006 23:51:02
Assunto:
Tratar exceções em regular expressions
LucasUyezu
JavaChild
Membro desde: 26/03/2006 22:41:46
Mensagens: 118
Offline
Pessoal,
Criei uma regular expression para validar CMC7 (uma espécie de linha digitável do cheque).
Um exemplo de CMC7 poderia ser o seguinte:
<12345678<1234567890>123456789012:
Criei a seguinte regexp:
<\d{8}<\d{10}>\d{12}:
A regular expression funciona bem, mas preciso rejeitar um CMC7 que possua zeros em todos os dígitos.
Hoje eu testo se a string bate com a regexp, e se bater, testo novamente para ver se não é o caso dos zeros.
Alguém pode me dizer se há como modificar a regexp para ela rejeitar esse caso?
Obrigado.
06/10/2006 00:53:35
Assunto:
Re:Tratar exceções em regular expressions
thiago.correa
GUJ Master
Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline
String teste = "<12345678<1234567890>123456789012:"; String regexValida = "<\d{8}<\d{10}>\d{12}:"; String regexInvalida = "<[0]{8}<[0]{10}>[0]{12}:"; Pattern p = Pattern.compile(regexInvalida); Matcher m = p.matcher(teste); if ( m.machtes() ) { throw new Exception("CMC7 inválido"); } // caso contrário você continua com a execução normal do programa
---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
T
h
iago
06/10/2006 09:17:20
Assunto:
Re:Tratar exceções em regular expressions
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
Acho que é matar mosca com canhão, mas lá vai:
import java.util.regex.*; import java.util.*; class TesteExceto { public static void main(String[] args) { String regexValida = "<\\d{8}<\\d{10}>\\d{12}:"; String regexInvalida = "<00000000<0000000000>000000000000:"; String[] test = { "<12345678<1234567890>123456789012:", "<00000000<0000000000>000000000000:", "0000000000000000000000000000000000" }; Pattern pat = Pattern.compile("(?!" + regexInvalida + ")" + regexValida, Pattern.CASE_INSENSITIVE); for (int i = 0; i < test.length; ++i) { System .out .println ("{" + test[i] + "} : " + pat.matcher(test[i]).matches()); } } }
Cuidado com "(?!)" que isso não resolve todos os problemas.
Índice dos Fóruns
»
Assuntos gerais (Off-topic)
Ir para:
Selecione um Fórum
Notícias
Assuntos gerais (Off-topic)
MundoJ - Artigos, Notícias e Debates
Artigos e Tutoriais
Java Básico
Java Avançado
Ferramentas, Frameworks e Utilitários
Desenvolvimento Web
Interface Gráfica
Google Android e Java Micro Edition (ME)
Certificação Java
Persistência: Hibernate, JPA, JDBC e outros
Java Enterprise Edition (Java EE)
Frameworks e Bibliotecas brasileiros
RIA - Flex, JavaFX e outros
Arquitetura de Sistemas
Metodologias de Desenvolvimento e Testes de Software
JavaScript
Ruby & Ruby on Rails
Outras Linguagens
Powered by
JForum 2.1.8
©
JForum Team