Estoy intentando crear una expresión regular para capturar los valores del calificador: pares de valores, similar a cómo se hace en GitHub Search
Como ejemplo:
project name: foo/bar, foo/bar; status: online, offline; user: test location: Spain, Italy
Se puede usar un punto y coma o un espacio para separar cada par qualifier:value .
Además, cada valor puede tener múltiples parámetros separados por comas:
status: online, offline
El objetivo es capturar el valor concreto del calificador específico.
Mi solución actual es la siguiente:
function getMatch(qualifier, string) { var formattedStr = string.replace(/ \/ | \/|\/ /g, "/"); const regex = new RegExp(`${qualifier}:[\\s]?([,/A-Za-z0-9_-]*)[;\\s]?`, "g"); var match = (formattedStr.match(regex) || []).map((e) => e.replace(regex, "$1") ); console.log(match) }Sin embargo, si el valor contiene varios parámetros separados por comas, solo detectará la primera aparición:
Para status: online, offline solo captará el valor online .
Te falta un carácter de espacio en tu clase de carácter aquí: [,/A-Za-z0-9_-]
Además, puede mejorar un poco su vida usando una letra comodín \w en lugar del bit A-Za-z0-9 .
Aquí está mi versión modificada: https://regexr.com/6ok61