使用 Javascript / jQuery ,我有以下字符串;
MasterString = "typography,caret,car,card,align,shopping-cart,adjust,allineate";
最佳 RegEx 是什么,用于提取包含所有字词的所有字词。 " 汽车",所以我剩下以下字符串;
ResultString = "caret,car,card,shopping-cart";
是否也可以只提取第一个单词,其中包含" 汽车"?
ResultString = "caret";
我正在编写一个简单的搜索例程,它将查询( car )与逗号分隔列表相匹配,我想将第一个结果显示为查询的结果。
更新
我尝试了下面答案中提到的简单RegEx;
[^,]*car[^,]*
效果很好,请看这个(测试 - )图片 - http://i.imgur.com/RXwkrrF.png?1
查询是" 汽车"所有图标都标有至少包含" 汽车"在搜索结果中显示。
唯一的问题是搜索字符串" 汽车"总是不同的(取决于搜索表单中的用户输入)。那么如何在上面的RegEx中输入变量匹配字符串?
像这样;
[^,]*%QUERY-FROM-SEARCHFIELD%[^,]*
答案 0 :(得分:1)
你可以在没有正则表达式的情况下这样做:
将字符串拆分为数组:
var tempArray = MasterString.split( ',' );
过滤数组中包含单词car
的值:
tempArray = tempArray.filter(function (x) {
if (x.contains('car')) return x;
});
加入生成的数组:
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];
答案 1 :(得分:0)
您可以尝试以下正则表达式仅匹配字符串caret,car,card,shopping-cart
,
[^,]*car[^,]*
> 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'