2009-07-07 39 views
14

he utilizado una expresión para validar un número positivo de la siguiente manera:validación número positivo en jQuery

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

cuando le doy una entrada de -23, que marcará la entrada como negativas, pero cuando le doy una entrada de +23, lo marcará como un número inválido!

¿cuál es el problema?

¿Alguien puede dar una solución que con +23 devolverá (positivo)?

+1

no es realmente una pregunta jQuery parece ser más acerca de expresiones regulares – Max

Respuesta

34

¿Ha considerado usar algo además de las expresiones regulares?

Si está utilizando el jQuery Validation Plugin se podría crear un método de validación personalizado utilizando la función Validator/addMethod:

$.validator.addMethod('positiveNumber', 
    function (value) { 
     return Number(value) > 0; 
    }, 'Enter a positive number.'); 

Editar: Como sólo desea expresiones regulares, prueba este:

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

Explicación:

  • Comience de cadena (^)
  • Opcional + signo (\+?)
  • La parte número entero ([0-9]*)
  • Un punto opcional (\.?)
  • opcional parte de punto flotante ([0-9]+)
  • Fin de cadena ($)
+0

gracias, mi demanda es en la expresión regular y se rayas blancas espacio –

+0

¿qué pasa con el espacio en blanco –

+0

esto también me hizo entender regex mucho mejor! –

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

Le da la posibilidad de poner un "+" al frente del número.

+0

probablemente algún error aquí, esta expresión no funcionan .... –

0

Si insiste en usar una expresión regular, asegúrese de que también captura números con exponentes y que permite números del formato .42, que es lo mismo que 0.42.

^+? \ D *.? \ D + ([eE] +? \ D +)? $

debe al truco.

+0

no es mi pregunta, mi pregunta acerca de + o - como prefijo y debe evitar el espacio en blanco –

+0

también un problema con él, no funciona correctamente –

0

bien, prueba esto;

\+?\d*\.?\d+\b 
+0

no buscando mejor ans –

1

Desde que estoy buscando algo similar, esto pondrá a prueba para un valor distinto de cero positivo, con un líder opcional signo más (+).

^\+?[1-9][0-9]*$ 

Esto no coincide con las posiciones decimales ni coincide con los ceros a la izquierda.

16

O simplemente use: min: 0.01.
Por ejemplo para el dinero

+0

¡Me gusta esta respuesta no es la mejor sino la más inteligente! – BlaShadow

1

forma más fácil es

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     digits: true 
    } 
    } 
}); 

ref: método dígitos | jQuery Validación Plugin ->https://jqueryvalidation.org/digits-method/

+0

También es excelente, como la respuesta del usuario1052072; también funciona, si solo agregas la clase '' 'digits''' a la entrada. – Andreas

Cuestiones relacionadas