RegEx – Estrai le parole che contengono una sottostring, da una string separata da virgole

Utilizzando Javascript / jQuery , ho la seguente string;

MasterString = "typography,caret,car,card,align,shopping-cart,adjust,allineate"; 

Qual è il miglior RegEx per estrarre tutte le parole che contiene ad esempio " auto ", quindi ho la seguente string rimasta;

 ResultString = "caret,car,card,shopping-cart"; 

Ed è anche ansible estrarre solo la prima parola, che contiene " auto "?

 ResultString = "caret"; 

Scrivo una semplice routine di ricerca che corrisponde alla query ( auto ) contro un elenco separato da virgole e voglio mostrare il primo risultato come risultato della query.


AGGIORNARE

Ho provato il RegEx semplice citato nella risposta qui sotto;

 [^,]*car[^,]* 

Funziona perfettamente, vedere questa image (test-) – http://i.imgur.com/RXwkrrF.png?1

La query è " auto " e tutte le icone contrassegnate con una parola che contiene alless " auto " vengono rese visibili nei risultati di ricerca.

L'unico problema è che la string di ricerca " auto " è sempre diversa (dipende dall'input dell'utente nel module di ricerca). Quindi, come posso inserire una string di corrispondenza variabile nel RegEx sopra?

Qualcosa come questo;

 [^,]*%QUERY-FROM-SEARCHFIELD%[^,]* 

Potresti provare il regex seguente per abbinare solo le corde caret,car,card,shopping-cart ,

 [^,]*car[^,]* 

DEMO

 > var masterString = "typography,caret,car,card,align,shopping-cart,adjust,allineate"; undefined > masterString.match(/[^,]*car[^,]*/g); [ 'caret', 'car', 'card', 'shopping-cart' ] 

Per abbinare la prima parola che contiene la string, è necessario rimuovere la bandiera globale dal model.

 > masterString.match(/[^,]*car[^,]*/); [ 'caret', index: 11, input: 'typography,caret,car,card,align,shopping-cart,adjust,allineate' ] 

Ora convertite l'arrays in una string delimitata da virgola e memorizzata in una variabile.

 > var resultString = masterString.match(/[^,]*car[^,]*/g).join(","); undefined > resultString 'caret,car,card,shopping-cart' 

Puoi farlo senza regex:

  1. Suddividere la string in una matrix:

     var tempArray = MasterString.split( ',' ); 
  2. Filtra l'arrays per i valori che contengono la parola car in esso:

     tempArray = tempArray.filter(function (x) { if (x.contains('car')) return x; }); 
  3. Associare all'arrays risultante indietro:

     ResultString = tempArray.join( ',' ); 

 MasterString = "typography,caret,car,card,align,shopping-cart,adjust,allineate"; var tempArray = MasterString.split( ',' ); tempArray = tempArray.filter(function (x) { if (x.contains('car')) return x; }); ResultString = tempArray.join( ',' ); 

Per get il primo risultato, accedi semplicemente all'elemento 0 di tempArray :

 var x = tempArray[0];