Como faço para incluir números decimais negativos nesta expressão regular?
90
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.
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+
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);
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:
e ambos corresponderam conforme o esperado.
fonte
^-?[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 :
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}$
fonte
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+)?$
fonte
^-?\d+(\.\d+)?$
dasATUALIZADO (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
fonte
-*
para-?
porque corresponde-------------
.Isso permitirá um caractere
-
ou+
apenas quando seguido por um número:^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
fonte
Isso permitirá números inteiros positivos e negativos
fonte
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+
fonte
Isso funcionou para mim, permitindo números negativos e positivos :
Se estiver usando C #:
Regex.Match(someString, @"\-*\d+").Value;
fonte
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);
fonte
Basta adicionar um token 0 ou 1:
^-?[0-9]\d*(.\d+)?$
fonte
Apenas para números negativos, isso é perfeito.
^-\d*\.?\d+$
fonte
^[+-]?\d{1,18}(\.\d{1,2})?$
aceita valores decimais positivos ou negativos.
fonte
Expressão regular para número, ponto decimal opcional, negativo opcional:
^-?(\d*\.)?\d+$;
funciona para inteiro negativo, decimal, negativo com decimal
fonte
^(-?\d+\.)?-?\d+$
permitir:
23425.23425 10.10 100 0 0.00 -100 -10.10 10.-10 -10.-10 -23425.23425 -23425.-23425 0.234
fonte