Problema Com Regex

6 respostas
colored

Bom Eu Tenho uma Regex aki, pra valores Monetarios. mas agora surgiu um probleminha…

Tipo Ela eh Assim

Boolean matcher = Pattern.matches("[0-9]+([.,][0-9]{2}+)?",value);

Ela Serve pra aceitar um valor ai pode haver “,” ou “.” e 2 casas decimais…
So que o seguinte qdo eu vo atualizar…

O Valor Vem Nessa Formato #.###,##
E minha mascara nao aceita esse ponto…
Alguem pode me ajudar???

6 Respostas

M

O ponto é um metacaracter em expressões regulares no Java. Use o caracter de escape:

Boolean matcher = Pattern.matches("[0-9]+([\.,][0-9]{2}+)?",value);
M

marcobiscaro2112:
O ponto é um metacaracter em expressões regulares no Java. Use o caracter de escape:

Boolean matcher = Pattern.matches("[0-9]+([\.,][0-9]{2}+)?",value);


Opa… mas não era essa sua dúvida. :roll:

M

Acho que é isso que você precisa:

boolean matcher = Pattern.matches("[0-9]{1,3}(\.[0-9]{3})*,[0-9]{2}", value);

Ele aceita valores como [#.###.##]#,## sendo que o que está entre colchetes no exemplo é opcional.

colored

Bom Mas ele teria tb q aceitar virgulas e pontos ou nada como opcionais…
por exemplo…
Tipo poderia ser assim:
1.200,00
1,200,00
1200,00
1200.00

M

Que tal:

boolean matcher = Pattern.matches("[0-9]{1,3}([.,]?[0-9]{3})*[.,][0-9]{2}", value);
colored

Serviu bem :smiley: Brigado.

Criado 14 de dezembro de 2009
Ultima resposta 14 de dez. de 2009
Respostas 6
Participantes 2