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

112
Visualizações
Encuentre el último índice del elemento en la cadena con regular y elimine la subcadena

Tengo una serie de cadenas. Estoy usando regular. Estoy tratando de encontrar el índice de ocurrencia del elemento y eliminar la subcadena de la cadena, pero tengo un problema cuando agrego otra ocurrencia del carácter.

Mi solución:

 const names = [ 'COMMENT — CODE | COUNTRY | DATE | TARGET', 'CODE| COUNTRY | DATE |TARGET', 'CODE|| COUNTRY| DATE |TARGET', 'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET', ]; const exp = new RegExp(/—|-/); const filteredNames = names.map(name => { const index = name.match(exp)?.index; return name.slice(index + 1) }); My result: "CODE | COUNTRY | DATE | TARGET" "CODE| COUNTRY | DATE |TARGET" "CODE|| COUNTRY| DATE |TARGET" "COMMENT 2 — CODE | COUNTRY | DATE | TARGET" <- not correct

Pero resultado esperado:

 "CODE | COUNTRY | DATE | TARGET" "CODE| COUNTRY | DATE |TARGET" "CODE|| COUNTRY| DATE |TARGET" "CODE | COUNTRY | DATE | TARGET"

Estaré muy agradecido por cualquier ayuda en este asunto.

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

0

Podríamos probar un enfoque de reemplazo de expresiones regulares aquí:

 var names = [ 'COMMENT — CODE | COUNTRY | DATE | TARGET', 'CODE| COUNTRY | DATE |TARGET', 'CODE|| COUNTRY| DATE |TARGET', 'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET', ]; var output = names.map(x => x.replace(/(?:.*? — )*([^ |]+)/g, "$1")); console.log(output);

Aquí hay una explicación del patrón de expresión regular que se usa aquí:

 (?:.*? — )* match (but do not capture) a "TERM — ", zero or more times ([^ |]+) then capture the final term in $1

Luego, reemplazamos cada entrada delimitada por tubería con $1 , el término final.

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede seleccionar la parte que necesita:

 const names = [ 'COMMENT — CODE | COUNTRY | DATE | TARGET', 'CODE| COUNTRY | DATE |TARGET', 'CODE|| COUNTRY| DATE |TARGET', 'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET', ]; const exp = new RegExp(/(\w+(\s*\|*\s*))*\w+\s*$/g); const filteredNames = names.map(name => { const matches = name.match(exp); return matches?.[0] || ''; }); console.log(filteredNames);

about 4 years ago · Juan Pablo Isaza Relatório

0

Para obtener el último elemento, puede dividir en cualquier tipo de guión y obtener la última parte:

 const names = [ 'COMMENT — CODE | COUNTRY | DATE | TARGET', 'CODE| COUNTRY | DATE |TARGET', 'CODE|| COUNTRY| DATE |TARGET', 'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET', ]; const regex = /[—-]/; names.forEach(s => { const parts = s.split(regex); console.log(parts[parts.length - 1].trim()); })

Para una coincidencia un poco más eficaz, puede usar un grupo repetido opcionalmente:

 \w+(?:\s*\|+\s*\w+\s*)*$

Explicación

  • \w+ Coincide con 1+ caracteres de palabra
  • (?: Grupo de no captura para repetir como un todo
    • \s*\|+\s*\w+\s* Combina 1 o más canalizaciones y caracteres de palabra entre los coches de espacios en blanco opcionales
  • )* Opcionalmente repetir
  • $ Fin de la cadena

Vea una demostración de expresiones regulares .

 const names = [ 'COMMENT — CODE | COUNTRY | DATE | TARGET', 'CODE| COUNTRY | DATE |TARGET', 'CODE|| COUNTRY| DATE |TARGET', 'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET', ]; const regex = /\w+(?:\s*\|+\s*\w+\s*)*$/; names.forEach(s => { const m = s.match(regex); if (m) { console.log(m[0]) } })

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