2012-04-21 22 views

risposta

49

Opzionalmente corrisponde un + o - all'inizio, seguito da una o più cifre decimali, opzionale seguito da un punto decimale e una o più cifre decimali util i fine della stringa:

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

RegexPal

+1

Non dovrebbe il segno meno accedi a '[+ -]' essere scappato come '[+ \ -]'? – jfriend00

+2

@ jfriend00 No, non è necessario. Non è possibile che sia un intervallo poiché è l'ultimo carattere della classe, quindi è un segno meno letterale. Basta provare questo nella tua console: '/^[+ -]? \ D + (\. \ D +)? $ /. Test ('- 1')' – Paulpro

+1

Vedo che funziona, ma perché non ha bisogno di essere sfuggito? – jfriend00

3

l'espressione giusta dovrebbe essere come segue:

[+-]?([0-9]*[.])?[0-9]+ 

questo si applica per:

+1 
+1. 
+.1 
+0.1 
1 
1. 
.1 
0.1 

Ecco Python esempio:

import re 
#print if found 
print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0'))) 
#print result 
print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0)) 

uscita:

True 
1.0 

Se si utilizza Mac, è possibile verificare on line di comando:

python -c "import re; print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))" 

python -c "import re; print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))" 
+0

Questa è la migliore risposta perché posso inserire mesire come 9.5mm o 9.5in ecc. Grazie per questo +1 –

+1

@ IvijanStefanStipić siete i benvenuti – lbsweek

+0

Non sembra riguardare questi casi: 23..8789 o 4587.387.987. Questo mi ha aiutato: https://stackoverflow.com/a/30461355/1783439 –

Problemi correlati