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

216
Visualizações
Javascript Regex para obtener una lista de cualquier palabra, excepto una palabra específica, pero también obtener esa palabra específica en otro grupo

Quiero obtener todas las categorías enumeradas en el ejemplo a continuación, fruta y carne, pero no la palabra obligatoria, pero quiero seguir siendo obligatoria si está presente:

 categories fruit meat mandatory

Traté de inspirarme en Match Everything excepto las cadenas especificadas.

https://regex101.com/r/peXJXx/1

 /(categories )(^(?!.+(mandatory)))(mandatory)?/gis

Pero no puedo hacerlo funcionar

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

0

const r = 'categories fruit meat mandatory'; const [, ...categories] = r.split(' ').filter(_ => _ !== 'mandatory');

No necesita Regex para tal problema, usé split (' ') para dividir la cadena en palabras (convertirla en una matriz), luego filtrarlas de 'obligatorio', también usé desestructuración para eliminar el primer elemento.

about 4 years ago · Juan Pablo Isaza Relatório

0

Si insiste en usar expresiones regulares, esto podría ser lo que desea.

 const input = "categories fruit meat mandatory"; const regex = /\w+/gm; const regex2 = /^\w+/g; const results = input.matchAll(regex); let type = input.match(regex2)[0]; let isMandatory = false; let isCategory = false; let categories = []; for (const result of results){ switch(result[0]){ case "categories": isCategory = true; break; case "mandatory": isMandatory = true; break; default: categories.push(result[0]); } } console.log("Type: " + type); console.log("Categories: " + categories.join(", ")); console.log("Mandatory: " + (isMandatory ? "Yes" : "No"));
 Type: categories Categories: fruit, meat Mandatory: Yes

Puedes arreglarlo como quieras. Esencialmente, si tiene varias entradas, recorrería cada cadena y ejecutaría este código. Si tiene otros tipos en lugar de categoría, puede agregar algo como isDepartment = false y luego, en el cambio, haga case "departments": isDepartment = true; break; .

También puede simplemente modificar la expresión regular para ignorar la primera palabra y crear un segundo patrón de expresión regular para identificar cómo es específicamente la primera palabra const regex2 = /^\w+/g; y luego let type = input.match(regex2)[0]; .

Aquí hay una muestra en vivo https://jsfiddle.net/gey3oqLp/1/

Editar: En realidad, ahora que lo pienso. Si vamos a la ruta de cambio, no necesitamos hacer coincidir nada específico en la expresión regular. Solo necesitamos hacer coincidir cada palabra y tratar con ella más adelante. Eliminé la expresión regular actualizada a la versión más simple.

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