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

290
Vistas
Regex: elimine los caracteres especiales pero conserve los números negativos

Estoy creando un componente Stepper numérico en React que debe admitir números enteros (tanto positivos como negativos) y decimales. Solo quiero mantener en estado la parte numérica de cualquier valor posible para que los métodos aritméticos funcionen correctamente.

Asi que:

El usuario ingresa 5, 5 se almacena en el estado

El usuario ingresa 5.5, 5.5 se almacena en estado

El usuario ingresa £ 5.57, 5.57 se almacenan en el estado

El usuario ingresa -5, -5 se almacena en el estado

Para hacer esto, he estado usando la siguiente expresión regular dentro de .replace() para eliminar cualquier carácter especial:

value.replace(/[^0-9.]/, '')

Sin embargo, esto elimina el carácter menos - los valores negativos. Intenté agregarlo al grupo de captura de esta manera: replace(/[^0-9.-]/, '') pero esto coincide con -5 y 5 - 3 . Me gustaría conservar los números negativos pero excluir cualquier otro uso del símbolo menos.

¿Algunas ideas?

Gracias

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puedes usar

 value.replace(/(-\d*\.?\d+).*|[^0-9.]/g, '')

Detalles

  • (?!^)- - un guión que no está al comienzo de la cadena
  • | - o
  • [^0-9.-] : cualquier carácter que no sea un dígito, punto o guión.

 const c = ['5', '5.5', '£5.57', '-5', '-5-5', '5-3']; const re = /(?!^)-|[^0-9.-]/g; for (var i of c) { console.log(i, '=>', i.replace(re, '')); }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto parece hacer lo que quieres:

 const trimSpecial = x => x // first preserve all `-` .replace(/[^0-9.-]/g, '') // then remove all `-` except, optionally, the one in first position .replace(/(?!^-)-/g, '') const test = x=>console.log(x, "=>", trimSpecial(x)) test("-5.8") test("$-3") test("-5-5") test("6 - 6")

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