簡體   English   中英

RegEx - 從逗號分隔的字符串中提取包含子字符串的單詞

[英]RegEx - Extract words that contains a substring, from a comma seperated string

使用Javascript / jQuery ,我有以下字符串;

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

什么是提取包含例如“ car ”的所有單詞的最好的RegEx ,所以我剩下以下字符串;

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

是否也可以僅提取包含“ 汽車 ”的第一個單詞?

ResultString = "caret";

我正在編寫一個簡單的搜索例程,它將查詢( car )與逗號分隔列表進行匹配,我想將第一個結果顯示為查詢的結果。


UPDATE

我嘗試了下面答案中提到的簡單RegEx;

[^,]*car[^,]*

它完美無缺,請看這個(測試)圖像 - http://i.imgur.com/RXwkrrF.png?1

查詢為“ car ”,並且在搜索結果中顯示所有標記有至少包含“ car ”的單詞的圖標。

唯一的問題是搜索字符串“ car ”總是不同的(取決於搜索表單中的用戶輸入)。 那么如何在上面的RegEx中輸入變量匹配字符串呢?

像這樣的東西;

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

您可以嘗試下面的正則表達式只匹配字符串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' ]

要匹配包含字符串car的第一個單詞,您需要從模式中刪除全局標志。

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

現在將數組轉換為由逗號分隔的字符串並將其存儲到變量中。

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

沒有正則表達式你可以這樣做:

  1. 將字符串拆分為數組:

     var tempArray = MasterString.split( ',' ); 
  2. 過濾數組中包含單詞car值:

     tempArray = tempArray.filter(function (x) { if (x.contains('car')) return x; }); 
  3. 加入生成的數組:

     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( ',' );

要獲得第一個結果,只需訪問tempArray的第0個元素:

var x = tempArray[0];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM