2012-04-21 39 views

Respuesta

49

encontró Opcionalmente un + o - en el comienzo, seguido por uno o más dígitos decimales, opcional seguido de un punto decimal y uno o más dígitos decimales util el final de la cadena:

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

RegexPal

+1

el signo menos iniciar sesión '[+ -]' escaparse como '[+ \ -]'? – jfriend00

+2

@ jfriend00 No, no tiene que ser así. No es posible que sea un rango, ya que es el último personaje de la clase, por lo que es un signo menos literal. Simplemente intente esto en su consola: '/^[+ -]? \ D + (\. \ D +)? $ /. Test ('- 1')' – Paulpro

+1

Veo que funciona, pero ¿por qué no necesita escaparse? – jfriend00

3

La expresión correcta debería ser como sigue:

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

esto se aplica para:

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

Aquí es Python ejemplo:

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)) 

Salida:

True 
1.0 

Si está utilizando Mac, puede probar en la línea de comandos:

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))" 
¿No debería
+0

Esta es una mejor respuesta porque puedo poner mesires como 9.5mm o 9.5in etc. Gracias por este +1 –

+1

@ IvijanStefanStipić de nada – lbsweek

+0

No parece cubrir estos casos: 23..8789 o 4587.387.987. Esto me ayudó: https://stackoverflow.com/a/30461355/1783439 –

Cuestiones relacionadas