Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

$regex_preco

Fala professor, na parte das validações de moedas, não consegui pegar a lógica de como funciona a parte de validar os milhares em diante, poderia talvez explicar com outras palavras a parte central da expressão onde tem o asterístico(*)?

$regex_preco = "/^[0-9]{1,3} ([.][0-9]{3})* [,][0-9]{2}$/"

2 respostas
solução!

Opa Lucas, Tudo beleza ?

Então vou tentar te explicar por partes beleza ?

Destrinchando esse pattern temos :

^[0-9]{1,3} => Está primeira parte diz que o padrão tem que começar(^)com um numero de 0-9 ( [0-9] ) e possuir de no mínimo 1 e no máximo 3 caracteres ( {1,3} ).

([.][0-9]{3})* => deve começar com . ([.]), possuir somente números ([0-9]) e com 3 dígitos necessariamente (3) e pode ter qualquer quantidade deste pattern (*). Exemplos : 1.123,12 => Uma "instancia" do pattern

12,12 ou 0,12 ou 0,00 => Nenhuma "instancia" do pattern

1.123.456,12 ou 123.123.456.789,12 => Mais de uma "instancia" do pattern

***Perceba que o subpaterrn está em parênteses ([.][0-9]{3})

Por fim : [,][0-9]{2}$ => [,] Começar com uma ,(,)possuir apenas números de 0 a 9 [0-9], e necessariamente 2 dígitos, além de terminar com um numero $.

Para saber mais sobre os metadados :

https://www.php.net/manual/en/regexp.reference.meta.php

Para ter mais exemplos e uma leitura em leitura bem simplificada e interessante :

https://www.devmedia.com.br/expressoes-regulares-em-php/25076

Abs,

Muito Obrigado Paulo, ficou bem claro agora.