2011-10-10 345 views
5

Necesito una expresión regular en javascript que solo acepte números positivos y decimales. Esto es lo que tengo, pero algo está mal, no parece tener un solo dígito positivo.Expresión regular para aceptar solo números positivos y decimales

Por ejemplo, 9 no funcionará. ¿Cómo puedo reestructurar esto así que si hay al menos un dígito positivo, funcionará?

+0

Dado que tiene + después de cada clase de carácter [0-9], los números sin decimales tendrán que tener al menos dos dígitos de longitud. –

Respuesta

14
/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/ 

partidos

0 
+0 
1. 
1.5 
.5 

pero no

. 
1..5 
1.2.3 
-1 

EDIT:

Para manejar notación científica (1e6), es posible que desee hacer

/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/ 

Si desea que los números estrictamente positivos, sin cero, se puede hacer

/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/ 
+0

Sí este es bastante bueno .. No se puede encontrar ningún problema. –

+0

@MikeChristensen, no maneja la notación científica, pero puede abrochar un '(eE) [+ -]? Opcional [0-9] +' opcional antes del '$' para manejar eso. –

1

Hay algunas maneras diferentes de hacer esto dependiendo de su necesidad:

/^[0-9.]+$/ partidos 1 y 1.1 pero no -1

/^[0-9]+\.[0-9]+$/ partidos 1.1 pero no 1 o -1

En general, recomiendo el uso de una guía de referencia simple de regExp como http://www.regular-expressions.info/ para construir expresiones, y luego probarlas usando java guión adecuado consola navegador:

"123.45".match(/^[0-9.]+$/)

+0

Eso también incluirá '...' y así sucesivamente. – NT3RP

+0

Es cierto que parecía que la pregunta era más amplia antes de editarla. –

1

¿Qué tal como:

^[.]?[0-9]+[.]?[0-9]*$ 
+0

¿No coincidirá eso también con '.0.0'? – NT3RP

+0

Sí, ese es un problema ... Supongo que usar la cláusula "o" es la mejor opción ... –

0

Usted puede tratar esto -

^\d{0,10}(\.\d{0,2})?$ 

También un sitio interesante para probar y para obtener una descripción de sus propias expresiones regulares https://regex101.com/

Cuestiones relacionadas