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

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

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 Denunciar

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 Denunciar

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