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

375
Vistas
How to properly validate decimal values?

I am writing an input field sanitizer function that should check whether that input value is decimal or not.

Test 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

I don't want to show a validation error, I just want to prevent users from typing a wrong decimal value.

This regular expression /^[0-9]+\.?[0-9]+/ covers all the cases besides the 5th point. I guess here the only method to use is String.prototype.replace() in order to cut the unwanted wrong characters.

P.S. This validation is quite similar to HTML input type number native validation, except the 5th point, which is accepted as a valid number type.

UPDATED!

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 Respuestas
Responde la pregunta

0

You could test if the string does not start with 2 or more zeroes

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

Regex demo

Note that your pattern ^[0-9]+\.?[0-9]+$ matches at least 2 digits as only the comma is optional.

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 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