Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

341
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda