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

188
Vistas
Verificar una cadena con expresiones regulares en javascript

Necesito aceptar una cadena que defina cuántos códigos postales usará el usuario.

Ejemplos:

  • Si el usuario quiere usar todos los códigos postales del 1000 al 1200
    Luego ingresará 1000:1200
  • Si quiere usar solo 1000 y 1200
    Luego ingresará 1000,12000
  • combinar ambos es posible 1010:1015,1019,1025:1027 devolverá [1010,1011,1012,1013,1014,1015,1019,1025,1026,1027]

Necesito verificar esa cadena.
Usé esto para verificar pero no funcionó

 /(\d{4}(:|,){0,1}\d{4})/gm
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Comience con una frase básica que coincida con #### o ####:####

 \d{4}(:\d{4})?

Luego extiéndalo para que coincida con cualquier número de ellos en una lista separada por comas:

 \d{4}(:\d{4})?(,\d{4}(:\d{4})?)*

Finalmente, rodee con ^ y $ para validar toda la línea.

 ^(\d{4}(:\d{4})?)(,(\d{4}(:\d{4})?))*$
about 4 years ago · Juan Pablo Isaza Denunciar

0

Por mucho que traté de simplificar un Regex, aquí hay un verdadero validador para sus cadenas específicas.
Parece un poco largo ya que coincide con un rango de 1000→1200 : 1(?:[01]\d{2}|200)

 /^1(?:[01]\d{2}|200)(?::1(?:[01]\d{2}|200)(?!:)|,1(?:[01]\d{2}|200))*$/g

Regex101.com ejemplo y descripción

sin el rango
el Regex es más simple pero también coincidirá con cualquier número de cuatro dígitos como 0000 , 9999 :

 /^\d{4}(?::\d{4}(?!:)|,\d{4})*$/g

Regex101.com ejemplo y descripción

Más simple, pero no para ser utilizado como validador
La solución más sencilla sería

 /^\d{4}(?:[,:]\d{4})*$/g

Regex101.com ejemplo y descripción
pero como puede ver, coincidirá con muchas entradas incorrectas como el 1000:1005:1020 inválido (dos :

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe expandir estas coincidencias después de encontrar la coincidencia. Supongo que la cadena se valida antes, si no se usa if (/^\d+(?:[:,]\d+)*$/.test(s)) { ... } .

 let s = '1010:1015,1019,1025:1027'; const chunks = s.replace(/(\d+):(\d+)/g, (_,$1,$2) => Array.from( new Array(Number($2)-Number($1)), (x, i) => i + Number($1)) .join(",")).split(','); console.log(chunks);

La Array.from(new Array(Number($2)-Number($1)), (x, i) => i + Number($1)) genera un rango de números entre los valores del Grupo 1 y el Grupo 2 obtenidos con el /(\d+):(\d+)/g expresión regular.

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