Como criar máscara que suporta ip e ipv6

6 respostas
F

Bom dia, estou com um problema espero que alguém consiga me ajudar.

Estou em uma aplicação Desktop que precisa de um campo para colocar o ip (também deve suportar ipv6).

Como posso criar uma máscara que suporte ambos?

Atualmente tenho uma máscara de ip normal

... txtIp = new JFormattedTextField(new MaskFormatter("###.###.###.###"));

6 Respostas

R

O IP “normal” é o IPV4, certo?

Essa máscara realmente é de IPV4? ela aceita 999? porque se aceita você precisa repensá-la.

não sei muito bem como funciona esse MaskFormatter, mas se aceitar expressões regulares você pode simplesmente usar um OR.

F

Obrigado, vou dar uma pesquisada no MaskFormatter

R

Quanto ao formato do IPV6, tem um cuidado especial que você precisa tomar, veja:

Wikipedia:
Os endereços IPv6 são normalmente escritos como oito grupos de 4 dígitos hexadecimais. Por exemplo,
2001:0db8:85a3:08d3:1319:8a2e:0370:7344

Se um grupo de vários dígitos seguidos for 0000, pode ser omitido. Por exemplo,
2001:0db8:85a3:0000:0000:0000:0000:7344

é o mesmo endereço IPv6 que:
2001:0db8:85a3::7344

Fonte: http://pt.wikipedia.org/wiki/IPv6

C

Use expressão regular…

Tem essa classe pronta…

http://javaaberto.blogspot.com.br/2012/11/mascara-para-ip.html

F

charleston10, nesse link ele não é só para ip??

estou tentando para ipv6, na verdade, precisa aceitar tanto ip, quanto ipv6

C

Vc manja expressao regular…
Nessa classe da pra vc mudar a expressao e validar oq vc quiser… mas so na String da expressao, vc mudar o conteudo dela…
da pra validar e-mail, rg, cpf… oq vc quiser… até seu nome…

tenta procurar pela expressao regular para IPv6 depois so alterar la…

eu encontrei esse, mas nem sei se é…
Não assusta não, é assim mesmo… rsrs

\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\z

http://blogs.msdn.com/b/mpoulson/archive/2005/01/10/350037.aspx

Criado 9 de novembro de 2012
Ultima resposta 9 de nov. de 2012
Respostas 6
Participantes 3