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

329
Views
Cómo validar un número flotante en [tipo de entrada = texto]

Necesito una expresión regular que valide el número de coma flotante, construí lo siguiente.

 <label for="salary">Enter floating nunmber:</label> <input type="text" id="salary" name="salary" oninput="this.value = this.value.replace(/[^-0-9.]/g, '').replace(/(\..*)\./g, '$1').replace(/(\-.*)\-/g, '$1');" />

Funciona pero falla en el caso de 11-111 . Como lo arreglo.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Tal vez algo como esto:

 const validateFloat = (e) => { let val = e.currentTarget.value; if(isNaN(val)){ val = val.replace(/[^-0-9\.]/g,''); if(val.split('.').length>2) val =val.replace(/\.+$/,""); } e.currentTarget.value = val; }

Usando:

 input.addEventListener("input", validateFloat);

Trabajando con valores negativos también.

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1') como:

 <label for="salary">Enter floating nunmber:</label> <input type="text" id="salary" name="salary" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')" />

about 4 years ago · Juan Pablo Isaza Report

0

El tipo de validación de entrada que está intentando aquí será monstruoso en un solo regEx, por lo que sería mejor dividirlo en varios más pequeños.

  • /[^0-9-.]/g para eliminar cualquier carácter no válido
  • /(-.*)-/g para eliminar cualquier extra -
  • /(\..*)\./g para eliminar cualquier archivo .

esto se vería así

 let val = '-abc123.45.67-89'; val = val.replace(/[^0-9-.]/g, ''); val = val.replace(/(-.*?)-/g, '$1'); val = val.replace(/(\..*?)\./g, '$1'); console.log(val) //"-123.456789"

si está realizando esto en cada entrada de caracteres, entonces debería funcionar bien, sin embargo, en la entrada masiva (es decir, una pegada), es posible que deba repetir los reemplazos para tener en cuenta que las coincidencias anteriores no se incluirán en la próxima coincidencia

p.ej

 let val = '-123-abc.123.45.67-89'; val = val.replace(/[^0-9-.]/g, ''); const minusMatch = /(-.*?)-/g; while(val.search(minusMatch)>=0){ val = val.replace(minusMatch, '$1'); } const dotMatch = /(\..*?)\./g; while(val.search(dotMatch)>=0){ val = val.replace(dotMatch, '$1'); } console.log(val)
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!