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

384
Views
¿Cómo validar correctamente los valores decimales?

Estoy escribiendo una función de desinfección de campo de entrada que debería verificar si ese valor de entrada es decimal o no.

Casos de prueba:

  • 1234 - cierto
  • 12.34 - verdadero
  • 0.123 - verdadero
  • 000045 - verdadero
  • 000.45 - falso
  • .45685 - falso
  • 5..454 - falso
  • 55874. - verdadero
  • 000000 - verdadero
  • 0.0. - falso

No quiero mostrar un error de validación, solo quiero evitar que los usuarios escriban un valor decimal incorrecto.

Esta expresión regular /^[0-9]+\.?[0-9]+/ cubre todos los casos excepto el 5to punto. Supongo que aquí el único método a usar es String.prototype.replace() para cortar los caracteres incorrectos no deseados.

PD Esta validación es bastante similar a la validación nativa de HTML input type number , excepto el quinto punto, que se acepta como un tipo de número válido.

¡ACTUALIZADO!

 const rgx = /^[0-9]+\.?[0-9]+$/ const cases = [ ["1234", true], ["12.34", true], ["0.123", true], ["000045", true], ["000.45", false], [".45685", false], ["5..454", false], ["55874.", true], ['000000', true], ['0.0.', false], ] cases.forEach(([str, result]) => { const actual = rgx.test(str); if (actual !== result) { console.log(`Test case "${str}" failed, gave ${actual} but expected ${result}.`); } });

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

0

Podría probar si la cadena no comienza con 2 o más ceros

 ^(?!00+\.)[0-9]+\.?[0-9]*$

Demostración de expresiones regulares

Tenga en cuenta que su patrón ^[0-9]+\.?[0-9]+$ coincide con al menos 2 dígitos, ya que solo la coma es opcional.

 const rgx = /^(?!00+\.)[0-9]+\.?[0-9]*$/ const cases = ["1234", "12.34", "0.123", "000045", "000.45", ".45685", "5..454", "55874.", "000000", "0.0." ] cases.forEach(s => console.log(`${s} --> ${rgx.test(s)}`));

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!