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

224
Visualizações
¿Cómo puedo incluir el delimitador con regex String.split()?

Necesito analizar los tokens de una cadena de formato GS1 UDI:

 "(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888"

Me gustaría dividir esa cadena con una expresión regular en "(nnn)" y tener el delimitador incluido con los valores divididos, así:

 [ "(20)987111", "(240)A", "(10)ABC123", "(17)2022-04-01", "(21)888888888888888" ]

A continuación se muestra un JSFiddle con ejemplos, pero en caso de que quieras verlo aquí mismo:

 // This includes the delimiter match in the results, but I want the delimiter included WITH the value // after it, eg: ["(20)987111", ...] str = "(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888"; console.log(str.split(/(\(\d{2,}\))/).filter(Boolean)) // Result: ["(20)", "987111", "(240)", "A", "(10)", "ABC123", "(17)", "2022-04-01", "(21)", "888888888888888"] // If I include a pattern that should (I think) match the content following the delimiter I will // only get a single result that is the full string: str = "(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888"; console.log(str.split(/(\(\d{2,}\)\W+)/).filter(Boolean)) // Result: ["(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888"] // I think this is because I'm effectively mathching the entire string, hence a single result. // So now I'll try to match only up to the start of the next "(": str = "(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888"; console.log(str.split(/(\(\d{2,}\)(^\())/).filter(Boolean)) // Result: ["(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888"]

Encontré y leí esta pregunta , sin embargo, los ejemplos allí son literales coincidentes y estoy usando clases de caracteres y obteniendo resultados diferentes.

No puedo crear un patrón de expresiones regulares que proporcione lo que busco. Aquí hay un JSFiddle de algunas de las cosas que probé: https://jsfiddle.net/6bogpqLy/

No puedo garantizar el orden de los "identificadores de aplicación" en la cadena de entrada y, como tal, la coincidencia con capturas nombradas no es una opción atractiva.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede dividir en posiciones donde sigue el elemento entre paréntesis, utilizando una aserción anticipada de longitud cero:

 const text = "(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888" const parts = text.split(/(?=\(\d+\))/) console.log(parts)

about 4 years ago · Juan Pablo Isaza Relatório

0

En lugar de split , use la match para crear la matriz. Luego busque 1) dígitos entre paréntesis, seguidos de un grupo que pueda contener un dígito, una letra o un guión, y luego 2) agrupe toda la consulta.

(PD. A menudo encuentro que un sitio como Regex101 realmente ayuda cuando se trata de probar expresiones fuera de un entorno de desarrollo).

 const re = /(\(\d+\)[\d\-AZ]+)/g; const str = '(20)987111(240)A(10)ABC123(17)2022-04-01(21)888888888888888'; console.log(str.match(re));

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