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