Javascript 要解析搜索提示的正则表达式
我的regex-fu很糟糕。我想建立一个智能搜索,在那里我可以给搜索引擎提示在哪个属性上搜索什么 大概是这样的:Javascript 要解析搜索提示的正则表达式,javascript,regex,Javascript,Regex,我的regex-fu很糟糕。我想建立一个智能搜索,在那里我可以给搜索引擎提示在哪个属性上搜索什么 大概是这样的: > var s = "location: London, New York tags: Bar, Club"; > var splitted = s.split(/location: | tags: /); > splitted[1].split(', ') ["London", "New York"] > splitted[2].split(', ') ["
> var s = "location: London, New York tags: Bar, Club";
> var splitted = s.split(/location: | tags: /);
> splitted[1].split(', ')
["London", "New York"]
> splitted[2].split(', ')
["Bar", "Club"]
搜索输入:位置:伦敦
->[“伦敦”]
搜索输入:位置:伦敦,纽约
->[“伦敦”、“纽约”]
搜索输入:位置:伦敦标签:酒吧
->[“伦敦”]
->[“Bar”]
搜索输入:位置:伦敦,纽约标签:酒吧,俱乐部
->[“伦敦”、“纽约”]
->[“酒吧”、“俱乐部”]
我想知道正则表达式应该如何像那样解析用户输入?如果您只是拆分字符串,如下图所示:
> var s = "location: London, New York tags: Bar, Club";
> var splitted = s.split(/location: | tags: /);
> splitted[1].split(', ')
["London", "New York"]
> splitted[2].split(', ')
["Bar", "Club"]
我会用一点正则表达式和Split
var input = 'location: London, New York tags: Bar, Club'; // example
var arrays = input.split(/\s*\w+:\s*/);
arrays.forEach(function (val, idx, arr) {
arr[idx] = val.split(/,\s*/);
});
我最终使用了一种不同的方法。也许只是我没有正确地得到其他的答案,但对我来说,似乎没有办法分辨出哪个目标词属于哪个键 如果
地点:伦敦、纽约标签:酒吧、俱乐部
将切换到标签:酒吧、俱乐部地点:伦敦、纽约
我现在如何确定哪些目标词属于位置
,哪些属于标记
所以我所做的是:
var locationMatch = searchString.match(/location:(((?!tags:)[-A-Za-z0-9, ])+)/);
//locationMatch[1] are the target words for "location"
var tagsMatch = searchString.match(/tags:(((?!location:)[-A-Za-z0-9, ])+)/);
//tagsMatch[1] are the target words for "tags"
我想有一个更简单的方法,但我还远远不是一个正则表达式专家