Come faccio ad abbinare anche i numeri negativi con questa espressione regolare? Questa regex funziona bene con valori positivi, ma voglio che consenta anche valori negativi, ad esempio -10, -125,5 ecc.
^[0-9]\d*(\.\d+)?$
Grazie
Come faccio ad abbinare anche i numeri negativi con questa espressione regolare? Questa regex funziona bene con valori positivi, ma voglio che consenta anche valori negativi, ad esempio -10, -125,5 ecc.
^[0-9]\d*(\.\d+)?$
Grazie
Risposte:
È necessario aggiungere un trattino opzionale all'inizio aggiungendo -?
( ?
è un quantificatore che significa una o zero occorrenze ):
^-?[0-9]\d*(\.\d+)?$
L'ho verificato in Rubular con questi valori:
10.00
-10.00
ed entrambi corrispondevano come previsto.
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
Alcuni esempi di espressioni regolari:
Numeri 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, g / m / 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é prima ne hai bisogno [0-9]
.
Provare:
^-?\d*(\.\d+)?$
Aggiornare
Se vuoi essere sicuro di avere una cifra nella posizione delle unità, usa
^-?\d+(\.\d+)?$
^-?\d+(\.\d+)?$
dovrebbe funzionare se è così
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
-*
in -?
perché corrisponde -------------
.
Ciò consentirà un carattere -
o +
solo quando seguito da un numero:
^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
Ciò consentirà numeri interi positivi e negativi
ValidationExpression = "^ -? [0-9] \ d * (\ d +)? $"
Ho alcuni esperimenti su regex nell'URL di Django, che richiedeva numeri da negativi a positivi
^(?P<pid>(\-\d+|\d+))$
Concentriamoci su questa (\-\d+|\d+)
parte e ignorandone le altre, questo punto e virgola |
significa OR in regex, quindi il valore negativo corrisponderà a questa \-\d+
parte e il valore positivo a questa\d+
Questo ha funzionato per me, consentendo numeri sia negativi che positivi :
\-*\d+
Se si utilizza C #:
Regex.Match(someString, @"\-*\d+").Value;
Se hai questo val="-12XXX.0abc23"
e vuoi estrarre solo il numero decimale, in questo caso questa regex ( ^-?[0-9]\d*(\.\d+)?$
) non ti aiuterà a raggiungerlo.
questo è il codice corretto con la corretta regex di rilevamento:
var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);
Solo per numero negativo, questo è perfetto.
^-\d*\.?\d+$
^[+-]?\d{1,18}(\.\d{1,2})?$
accetta valori decimali positivi o negativi.
^(-?\d+\.)?-?\d+$
permettere:
23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234