Come posso includere i numeri decimali negativi in ​​questa espressione regolare?

Come posso abbinare anche i numeri negativi con questa espressione regolare? Questo regex funziona bene con valori positivi, ma voglio anche consentire valori negativi, ad esempio -10, -125,5 ecc.

^[0-9]\d*(\.\d+)?$ 

Grazie

Dovresti aggiungere un trattino opzionale all’inizio aggiungendo -? ( ? è un quantificatore che indica uno o zero occorrenze ):

 ^-?[0-9]\d*(\.\d+)?$ 

L’ho verificato in Rubular con questi valori:

 10.00 -10.00 

ed entrambi sono stati abbinati come previsto.

Alcuni esempi di espressioni regolari:

Interi positivi :

 ^\d+$ 

Numeri interi negativi :

 ^-\d+$ 

Intero :

 ^-?\d+$ 

Numero positivo :

 ^\d*\.?\d+$ 

Numero negativo :

 ^-\d*\.?\d+$ 

Numero positivo o numero negativo :

 ^-?\d*\.{0,1}\d+$ 

Numero di telefono

 ^\+?[\d\s]{3,}$ 

Telefono con codice :

 ^\+?[\d\s]+\(?[\d\s]{10,}$ 

Anno 1900-2099 :

 ^(19|20)[\d]{2,2}$ 

Data (gg mm aaaa, gg / aaaa, ecc.):

 ^([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}$ 

Non so perché ne hai bisogno prima [0-9] .

Provare:

 ^-?\d*(.\d+)?$ 

Aggiornare

Se vuoi essere sicuro di avere una cifra sul posto, usa

 ^-?\d+(.\d+)?$ 

Ciò consentirà un carattere - o + solo quando seguito da un numero:

  ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$ 

AGGIORNATO (13/08/2014): questo è il miglior codice per numeri positivi e negativi =)

 (^-?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} 

Ho provato con questi numeri e funziona bene:

 -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 

Ciò consentirà numeri interi sia positivi che negativi

ValidationExpression = “^ -?? [0-9] \ d * (\ d +) $”

Ho alcuni esperimenti sulla regex nell’URL django, che richiedeva numeri negativi o positivi

 ^(?P(\-\d+|\d+))$ 

Concentriamoci su questa parte (\-\d+|\d+) e ignorando gli altri, questo punto e virgola | significa OR in regex, quindi il valore negativo corrisponderà a questa \-\d+ parte, e valore positivo in questo \d+

Basta aggiungere un token 0 o 1:

 ^-?[0-9]\d*(.\d+)?$ 

Solo per il numero negativo, questo è perfetto.

 ^-\d*\.?\d+$ 

Espressione regolare per numero, decimale opzionale, negativo opzionale:

 ^-?(\d*\.)?\d+$; 

funziona per intero negativo, decimale, negativo con decimale

Questo ha funzionato per me, consentendo numeri sia negativi che positivi :

  \-*\d+ 

Se si utilizza C #:

 Regex.Match(someString, @"\-*\d+").Value; 
 ^[+-]?\d{1,18}(\.\d{1,2})?$ 

accetta valori decimali positivi o negativi.