Expressão regular para decimal em banco de dados oracle

2 respostas
O

Olá,

Preciso de uma expressão regular que valide um campo de texto com um número decimal para ser passado para uma coluna NUMBER(9,3) de um banco de dados oracle. O número deve conter no máximo 9 dígitos, sendo que 3 destes podem ou não ser casas decimais, por exemplo:

23.10 --> PASSA
23.109 --> PASSA
23.1109 --> NÃO PASSA
232323232 --> PASSA
12345678.3 --> PASSA
-12345678 --> PASSA
-123456789 --> NÃO PASSA
123456.789 --> PASSA
1234567.89 --> PASSA
123456.789 --> PASSA
1123456.789 --> NÃO PASSA
-12345.678 --> PASSA
-123456.789 – NÃO PASSA

Resumindo, o número deve conter no máximo 3 dígitos decimais e no máximo 9 no total. Eu já fiz esta expressão:

Ela consegue validar a quantidade de dígitos depois do ponto e o sinal de + ou - no início. Consegue também validar se o número possui 9 dígitos antes do ponto, mas não considera os depois do ponto, portanto não é o desejado. Alguém tem uma ideia sobre como corrigir esta expressão? Desde já agradeço.

2 Respostas

O

Consegui melhorar a expressão, agora ela aceita no máximo 9 caracteres, mas não ignora o ponto.

O

Consegui resolver de uma outra maneira utilizando split no ponto e utilizando o length das substrings geradas

Criado 7 de fevereiro de 2012
Ultima resposta 8 de fev. de 2012
Respostas 2
Participantes 1