Validação de valores monetários

659 views
Skip to first unread message

Cássio Talle

unread,
Feb 23, 2010, 9:12:24 AM2/23/10
to Expressões regulares
Olá gostaria de fazer validação para valores monetários ou decimais
com expressão regular:

Gostaria de saber como ficaria a versão com a separação de milhar:

5.999,00

e sem:

5999,00

Obrigado.

Fernando Z. Bob

unread,
Feb 23, 2010, 11:52:55 AM2/23/10
to expressoes...@googlegroups.com
Fiz essa, acho que vai funcionar para você


([0-9]{0,3}\.?)+,[0-9]{2}

Abraços

2010/2/23 Cássio Talle <cassio...@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.


Joel Landim

unread,
Feb 23, 2010, 12:51:25 PM2/23/10
to expressoes...@googlegroups.com
Assim desta forma os numeros abaixo serão validos:


9.,99
999.,99
9,99
99,99
999,99


mas nao valida

9.999,99


Mudança seria, ou algo assim:

[0-9]+?\.?[0-9]{0,3},[0-9]{2}

--
Joel Landim Mourão

Cássio Talle

unread,
Feb 23, 2010, 1:13:43 PM2/23/10
to Expressões regulares
Tentetei usar com php mas não consegui...

ficaria assim em php?

if(preg_match("/([0-9]{0,3}\.?)+,[0-9]{2}/", $number)){
// verdadeiro
}

On Feb 23, 1:52 pm, "Fernando Z. Bob" <fzmas...@gmail.com> wrote:
> Fiz essa, acho que vai funcionar para você
>

> *([0-9]{0,3}\.?)+,[0-9]{2}*
>
> Abraços
>
> 2010/2/23 Cássio Talle <cassiolan...@gmail.com>


>
> > Olá gostaria de fazer validação para valores monetários ou decimais
> > com expressão regular:
>
> > Gostaria de saber como ficaria a versão com a separação de milhar:
>
> > 5.999,00
>
> > e sem:
>
> > 5999,00
>
> > Obrigado.
>
> > --
> > 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%2Bunsu...@googlegroups.com>

caio ariede

unread,
Feb 23, 2010, 1:11:49 PM2/23/10
to expressoes...@googlegroups.com
Qual a linguagem de programação? É importante informar.

Caio Ariede
http://caioariede.com/


2010/2/23 Fernando Z. Bob <fzma...@gmail.com>

caio ariede

unread,
Feb 23, 2010, 1:54:21 PM2/23/10
to expressoes...@googlegroups.com

preg_match('!^\d{1,3}(\.\d{3})*(\,\d{2})?$!', $number);

Caio Ariede
http://caioariede.com/


2010/2/23 Cássio Talle <cassio...@gmail.com>
Para cancelar a inscrição nesse grupo, envie um e-mail para expressoes-regul...@googlegroups.com.

Cássio Talle

unread,
Feb 24, 2010, 9:48:46 AM2/24/10
to Expressões regulares
funcionou para números com a separação de milhar...

mas eu tb gostaria de sabe como funcionaria para números sem o
separador se milhar...

ex: 10000,00

Obrigado...

On Feb 23, 3:54 pm, caio ariede <caio.ari...@gmail.com> wrote:
> preg_match('!^\d{1,3}(\.\d{3})*(\,\d{2})?$!', $number);
>
> Caio Ariedehttp://caioariede.com/
>

> 2010/2/23 Cássio Talle <cassiolan...@gmail.com>


>
> > Tentetei usar com php mas não consegui...
>
> > ficaria assim em php?
>
> > if(preg_match("/([0-9]{0,3}\.?)+,[0-9]{2}/", $number)){
> > // verdadeiro
> > }
>
> > On Feb 23, 1:52 pm, "Fernando Z. Bob" <fzmas...@gmail.com> wrote:
> > > Fiz essa, acho que vai funcionar para você
>
> > > *([0-9]{0,3}\.?)+,[0-9]{2}*
>
> > > Abraços
>
> > > 2010/2/23 Cássio Talle <cassiolan...@gmail.com>
>
> > > > Olá gostaria de fazer validação para valores monetários ou decimais
> > > > com expressão regular:
>
> > > > Gostaria de saber como ficaria a versão com a separação de milhar:
>
> > > > 5.999,00
>
> > > > e sem:
>
> > > > 5999,00
>
> > > > Obrigado.
>
> > > > --
> > > > 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%2Bunsu...@googlegroups.com>

> > <expressoes-regulares%2Bunsu...@googlegroups.com<expressoes-regulares%252Buns...@googlegroups.com>

Cássio Talle

unread,
Feb 24, 2010, 8:59:38 AM2/24/10
to Expressões regulares
Eu fiz o tesnte com o

preg_match('!^\d{1,3}(\.\d{3})*(\,\d{2})?$!', $number);

Deu certo, mas funcionou para número com separadores de minhar...

como eu faço pra validar números assim...

10000,00

obrigado...


On Feb 23, 3:54 pm, caio ariede <caio.ari...@gmail.com> wrote:

> preg_match('!^\d{1,3}(\.\d{3})*(\,\d{2})?$!', $number);
>

> Caio Ariedehttp://caioariede.com/
>
> 2010/2/23 Cássio Talle <cassiolan...@gmail.com>
>

> > Tentetei usar com php mas não consegui...
>
> > ficaria assim em php?
>
> > if(preg_match("/([0-9]{0,3}\.?)+,[0-9]{2}/", $number)){
> > // verdadeiro
> > }
>
> > On Feb 23, 1:52 pm, "Fernando Z. Bob" <fzmas...@gmail.com> wrote:
> > > Fiz essa, acho que vai funcionar para você
>
> > > *([0-9]{0,3}\.?)+,[0-9]{2}*
>
> > > Abraços
>
> > > 2010/2/23 Cássio Talle <cassiolan...@gmail.com>
>
> > > > Olá gostaria de fazer validação para valores monetários ou decimais
> > > > com expressão regular:
>
> > > > Gostaria de saber como ficaria a versão com a separação de milhar:
>
> > > > 5.999,00
>
> > > > e sem:
>
> > > > 5999,00
>
> > > > Obrigado.
>
> > > > --
> > > > 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%2Bunsu...@googlegroups.com>

> > <expressoes-regulares%2Bunsu...@googlegroups.com<expressoes-regulares%252Buns...@googlegroups.com>

Gustavo Dutra

unread,
Feb 24, 2010, 11:05:17 AM2/24/10
to expressoes...@googlegroups.com
Acho que a melhor forma é divir em 2, fica mais amigável:

preg_match('!^\d{1,3}(\.\d{3})*(\,\d{2})?$!', $number) || preg_match("!^\d+,\d\d$", $number);


2010/2/24 Cássio Talle <cassio...@gmail.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.




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

Felipe Pena

unread,
Feb 24, 2010, 11:00:57 AM2/24/10
to Expressões regulares
On Feb 24, 11:48 am, Cássio Talle <cassiolan...@gmail.com> wrote:
> funcionou para números com a separação de milhar...
>
> mas eu tb gostaria de sabe como funcionaria para números sem o
> separador se milhar...
>
> ex: 10000,00
>

Então pode ser o seguinte:
!^(?:\d{1,3}(?:\.\d{3})*|\d+)(?:,\d{1,2})?$!

Note que alterei também a parte decimal, por que acho que vocẽ deve
querer aceitar: '10,5' ... se não, troque o {1,2} pelo {2}...

Alexandre Galvão Alves

unread,
Feb 25, 2015, 7:51:26 AM2/25/15
to expressoes...@googlegroups.com
peguei a expressão "^\d{1,3}(\.\d{3})*(\,\d{2})?$" aqui neste tópico mas o problema é que ela esta aceitando valores inteiros, como faço pra forçar o usuário a colocar o decimal?
Reply all
Reply to author
Forward
0 new messages