Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

210
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!