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

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

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