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

204
Vistas
expresión de número de expresiones regulares

Después de años de absorber el conocimiento de la comunidad SO, estoy aquí para hacer mi primera pregunta.

Estoy tratando de crear una expresión regular para un proyecto web de JavaScript para encontrar un número entero (positivo o negativo) con un separador de miles, o simplemente un número entero, en una cadena determinada.

Algunos ejemplos válidos:

 561,085 3,894,320 -59,099 1,000 1000 -1000 1 -1 0

Ejemplos no válidos:

 -01 01393 01,300,00 -04,044

He creado esta expresión hasta ahora:

 \b(?:[0])|(?:(((-)?[1-9]?\d{2}|\d)((,)?\d{3})|((-)?[1-9]+\d*)))\b

(?:[0]) - coincide con un 0 inicial

|(?:(((-)?[1-9?\d{2}|\d)((,)?\d{3}) - o haga coincidir un número inicial del 1 al 9 con una coma y 3 dígitos después

|((-)?[1-9]+\d*))) - o simplemente haga coincidir un número inicial completo de 1-9 sin comas

Creo que funciona en todos los casos, excepto cuando pruebo una cadena con 5 dígitos detrás de un signo menos, por ejemplo, así:
Valor: -01110

En este caso acepta 01110 como coincidencia.

¿Alguien podría ayudarme a descubrir en qué me equivoqué con la expresión?
Tampoco me importaría recibir algunos consejos/comentarios generales sobre cómo hice estallar la cereza de hacer una pregunta aquí, ¡salud!

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

0

podrías usar

 ^(?:0|-?[1-9]\d*|-?[1-9]\d{0,2}(?:,\d{3})+)$

Vea una demostración en regex101.com .


Eso significa:

 ^ # start of the string (?: # open par 0 # zero | # or -?[1-9]\d* # -100 or 234 or -121323232 | # or -?[1-9]\d{0,2}(?:,\d{3})+ # separated by comma ) # close par $ # end of the string

Para usarlo realmente "en la naturaleza" (es decir, en cualquier texto dado), debe ajustar los anclajes a las miradas:

 (?<=^|\s)(?:0|-?[1-9]\d*|-?[1-9]\d{0,2}(?:,\d{3})+)(?=\s|$) # ^^1^^ ^^2^^

^^1^^ significa "ya sea el comienzo de la cadena o algunos espacios en blanco delante de la expresión", ^^2^^ significa "algunos espacios en blanco o el final de la cadena justo después de la expresión".

Vea otra demostración en regex101.com .

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