| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 12:03:40
|
BrunoLaser
Thread.start()
![[Avatar]](/images/avatar/cb03c49012a597f2dcd23bc978567b71.png)
Membro desde: 11/04/2007 13:04:43
Mensagens: 35
Offline
|
Olá..
Estou tentando fazer uma expressão para validação de IP e estou tendo alguma dificuldade, alguém poderia me dar uma ajuda? Segue abaixo o código que estava tentando fazer
if(jTextField2.getText().matches("[1-255]*[.][0-255]*[.][0-255]*[.][0-255]*")){
System.out.printf("IP VÁLIDO!!!");
}
|
Ate +
BrunoLaser |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 12:41:20
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
Expremente tirar o *
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 12:52:00
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Cara ... isso com certeza com alguns minutos no google vc vai encontrar pronto. Sugiro um site chamado RegLib
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 13:35:52
|
mdantas21
Thread.start()
Membro desde: 06/05/2004 12:18:09
Mensagens: 40
Localização: SP
Offline
|
Existe um livro de bolso do Aurélio que está disponível totalmente livre na web: http://guia-er.sourceforge.net. A nova versão é muito boa, mas com esta você pode achar muitas outras coisas que precisa. E o melhor, conceitos valiosos.
Sucesso!
|
--
MDantas - SP
Márcio Dantas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 14:42:06
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
Olá, BrunoLaser!
BrunoLaser wrote:
Recomento que você dê uma lida na documentação da classe java.util.regex.Pattern, onde você encontrará uma tabela detalhada com os caracteres especiais e seus respectivos significados para uso em expressões regulares:
http://java.sun.com/javase/6/docs/api/index.html
Quanto ao seu caso, o primeiro problema que salta aos olhos é a utilização de forma errada do grupo de caracteres(o "[]"). Pelo nome já temos uma dica sobre qual foi o erro cometido: grupo de caracteres. Dentro de uma regex Java, o termo [1-255] não quer dizer do 1 até o 255, e sim do 1 até o dois, ou 5, ou 5. Expressões regulares não são capazes de "julgar" o valor de um trecho do texto, ou seja, não consegue saber se um pedaço do texto vale 1, 2, 255, 28474, -3473.585, etc... Uma solução para o seu caso pode utilizar regex, mas precisará de algum processamento a mais.
Outro problema é o que o caractere especial "*" representa um quantificador que conta 0 ou mais vezes. Dessa forma, seu regex permitiria um "ip fantasma", tipo assim: "..."!!!! Isso mesmo! Só tem os pontos, pois sua regex permite que a parte dos números possam aparecer várias vezes ou simplesmente não apareçam. Outra possibilidade dada pela sua regex seria um ip mais ou menos assim: "112255252515251..2212222211551.1
Uma regex útil para você seria a seguinte:
essa regex vai casar com qualquer string que siga um padrão assim: 1 a 3 dígitos, seguidos de um ponto, seguido de 1 a 3 dígitos, seguidos de um ponto, seguido de 1 a 3 dígitos, seguidos de um ponto, seguido de 1 a 3 dígitos.
Mas veja: A regex vai te garantir apenas isso, sem fazer julgamento do valor dos números que estão ali. Essa regex, por exemplo, permitiria um ip assim: 355.985.5.999.
Agora, é você quem vai ter que, programaticamente, validar os valores de cada termo do ip. Você pode utilizar, por exemplo, o método split da classe String para quebrar o ip e analisar cada membro. Tente e poste mais caso surjam novas dúvidas.
Sobre o método split: http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)
Divirta-se!
|
[]'s
Mantu
"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 15:49:31
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se puder, em vez de expressões regulares, tente converter (InetAddress.getByName()) e ver se dá algum problema (ok, se você usar essa rotina, demora um pouco porque pode ser que faça uma consulta ao DNS).
É que vocês se esqueceram do IPv6 (http://java.sun.com/j2se/1.5.0/docs/api/java/net/Inet6Address.html ) , onde a sintaxe é mais complicada ainda. Exemplos:
1080:0:0:0:8:800:200C:417A
1080::8:800:200C:417A
::FFFF:129.144.52.38
::129.144.52.38
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2007 19:01:49
|
mavcunha
Entusiasta Java
Membro desde: 01/04/2007 14:08:58
Mensagens: 21
Offline
|
Como mencionado, não tente bolar uma expressão regular para parsear IPs, carrego essa experiência da linguagem Perl.
Em Perl há uma discussão neste site:
http://www.perlmonks.org/?node_id=221512
Portanto a alternativa de utilizar InetAddress.getByName() pode ser uma boa como o thingol mencionou.
Agora em último caso a expressão regular que eu conheço é esta:
(1?\d\d?|2[0-4]\d|25[0-5])(\.(1?\d\d?|2[0-4]\d|25[0-5])){3}
|
[]'s Marco.
http://marcovaltas.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2007 11:16:15
|
jtsato
Thread.start()
Membro desde: 06/05/2005 16:05:11
Mensagens: 42
Offline
|
As vezes você não pode usar o InetAddress e tem que validar na unha.
|
Man goes to doctor. Says he's depressed.
Says Life is harsh and cruel.
Says he feels all alone in a threatening world.
Doctor says "Treatment is simple.
The Great Clown Pagliacci is in town tonight. Go see him.
That should pick you up."
Man bursts into tears. Says, "But doctor... I am Pagliaci." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2007 14:17:36
|
BrunoLaser
Thread.start()
![[Avatar]](/images/avatar/cb03c49012a597f2dcd23bc978567b71.png)
Membro desde: 11/04/2007 13:04:43
Mensagens: 35
Offline
|
Olá..
Agradeço a ajuda de todos, eu consegui fazer como o jtsato sugeriu e acabei programando na unha mesmo , vou até adicionar à favoritos este post pois as ajudas postadas aqui podem e tenho certeza que vão me ajudar em outros momentos ate mais!
|
Ate +
BrunoLaser |
|
|
 |
|
|