Como faço para combinar números negativos também por esta expressão regular? Esta regex funciona bem com valores positivos, mas eu quero que ela também permita valores negativos, por exemplo, -10, -125,5 etc.
^[0-9]\d*(\.\d+)?$
obrigado
Como faço para combinar números negativos também por esta expressão regular? Esta regex funciona bem com valores positivos, mas eu quero que ela também permita valores negativos, por exemplo, -10, -125,5 etc.
^[0-9]\d*(\.\d+)?$
obrigado
Respostas:
Você deve adicionar um hífen opcional no início, adicionando -?
( ?
é um quantificador que significa uma ou nenhuma ocorrência ):
^-?[0-9]\d*(\.\d+)?$
Eu verifiquei no Rubular com estes valores:
10.00
-10.00
e ambos corresponderam conforme o esperado.
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
Alguns exemplos de expressões regulares:
Inteiros positivos :
^\d+$
Inteiros negativos :
^-\d+$
Inteiro :
^-?\d+$
Número positivo :
^\d*\.?\d+$
Número Negativo :
^-\d*\.?\d+$
Número positivo ou número negativo :
^-?\d*\.{0,1}\d+$
Número de telefone :
^\+?[\d\s]{3,}$
Telefone com código :
^\+?[\d\s]+\(?[\d\s]{10,}$
Ano 1900-2099 :
^(19|20)[\d]{2,2}$
Data (dd mm aaaa, d / m / aaaa, etc.):
^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
IP v4 :
^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
Eu não sei por que você precisa disso primeiro [0-9]
.
Experimentar:
^-?\d*(\.\d+)?$
Atualizar
Se você quiser ter certeza de que terá um dígito na casa de uns, use
^-?\d+(\.\d+)?$
^-?\d+(\.\d+)?$
das
ATUALIZADO (13/08/2014): Este é o melhor código para números positivos e negativos =)
(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}
Tentei com estes números e funcionou bem:
-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701
-*
para -?
porque corresponde -------------
.
Isso permitirá um caractere -
ou +
apenas quando seguido por um número:
^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
Isso permitirá números inteiros positivos e negativos
ValidationExpression = "^ -? [0-9] \ d * (\ d +)? $"
Tenho alguns experimentos sobre regex em django url, que exigem números negativos a positivos
^(?P<pid>(\-\d+|\d+))$
Vamos nos concentrar nesta (\-\d+|\d+)
parte e ignorar as outras, este ponto e vírgula |
significa OR em regex, então o valor negativo corresponderá a esta \-\d+
parte, e o valor positivo a esta\d+
Isso funcionou para mim, permitindo números negativos e positivos :
\-*\d+
Se estiver usando C #:
Regex.Match(someString, @"\-*\d+").Value;
Se você tem isso val="-12XXX.0abc23"
e deseja extrair apenas o número decimal, neste caso este regex ( ^-?[0-9]\d*(\.\d+)?$
) não o ajudará a consegui-lo.
este é o código adequado com a regex de detecção correta:
var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);
Apenas para números negativos, isso é perfeito.
^-\d*\.?\d+$
^[+-]?\d{1,18}(\.\d{1,2})?$
aceita valores decimais positivos ou negativos.
^(-?\d+\.)?-?\d+$
permitir:
23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234