Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
Permitir escribir el signo menos al comienzo de un número durante la validación de entrada en vivo de enteros o flotantes de longitud específica con hasta dos dígitos decimales

Quiero permitir que el usuario ingrese un valor decimal con un máximo de 9 dígitos enteros y un máximo de 2 decimales después del punto. Pero también este valor puede ser negativo, con signo "-". Todo está bien, excepto este signo menos. Aunque sitios como "regexp.online" muestran que mi expresión regular está bien, no funciona en js+jquery. El signo menos falla la verificación. Ver:

 $('[name="price"]').bind("change keyup input", function() { pricecheck = '^(\\-)?\\d{1,9}(\\.\\d{0,2})?$'; var regex = new RegExp(pricecheck, 'g'); if (!regex.test(this.value)) { console.log('not in regex'); this.value = this.value.slice(0, -1); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input name="price" style="height:20px;">

Y violín - https://jsfiddle.net/obc6qptf/

Probé este "menos" sin barras invertidas: el mismo resultado. ¿Qué está mal?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Necesita usar una expresión regular que coincida con el primer dígito opcionalmente:

 const regex = /^-?\d{0,9}(?:\b\.\d{0,2})?$/;

Tenga en cuenta que el límite de palabra \b se usa para asegurarse de que . el separador no viene justo después de - , y si lo necesita, elimine \b del patrón.

Detalles :

  • ^ - comienzo de la cadena
  • -? - un - carácter (opcional)
  • \d{0,9} - cero a nueve dígitos
  • (?:\b\.\d{0,2})? - una secuencia opcional de
    • \b - un límite de palabra para requerir un dígito (aquí) antes de .
    • \. - un punto
    • \d{0,2} - cero, uno o dos dígitos
  • $ - final de la cadena.

Vea la demostración de JavaScript:

 $('[name="price"]').bind("change keyup input", function() { const regex = /^-?\d{0,9}(?:\b\.\d{0,2})?$/; if (!regex.test(this.value)) { this.value = this.value.slice(0, -1); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input name="price" style="height:20px;">

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda