Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

173
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!