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

215
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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