在字符串中进行短语搜索,制作正确的RegExp

时间:2014-02-05 14:34:39

标签: javascript regex search

我会直接开始,这就是我所拥有的:

var SResults = [];
function ActivateSearch(s) {
    SResults = [];

    for (var key in Products){
        if ((' '+Products[key]['n']).search(new RegExp('\\b(('+s+')|('+s+')[s])\\b', 'gi')) > 0) {
            SResults.push(key);
        }
    }
}
ActivateSearch('trampoline cover');

使用此功能,我尝试在Products [key] ['n']中找到单词或短语,这是某种标题ex。 “蹦床雨盖6英尺长,加上额外的”。

现在它有一个非常基本的工作原则,即在所提到的标题中寻找搜索短语的每一个单词。

问题:

如果有蹦床防雨罩,搜索字词是:蹦床盖 - 没有比赛。

问题:

如何更改正则表达式以匹配上述结果?

1 个答案:

答案 0 :(得分:1)

另一种选择是split,并使用正前瞻性和单词边界作为替代,例如:

^((?=.*\btrampoline\b)|(?=.*\bcover\b)).*$ 

const regex = /^((?=.*\btrampoline\b)|(?=.*\bcover\b)).*$/gmi;
const str = `Trampoline rain cover 6ft lenght plus extras
Rain cover 6ft lenght plus extras
Trampoline rain 6ft lenght plus extras
Cover trampoline rain 6ft lenght plus extras
Covers trampolines rains 6ft lenght plus extras
`;
let m;

while ((m = regex.exec(str)) !== null) {
	m.forEach((match, groupIndex) => {
		if (groupIndex == 0)
			console.log(`Found match, group ${groupIndex}: ${match}`);
	});
}


  

如果您想探索/简化/修改表达式,可以   在右上角的面板上进行了说明   regex101.com。如果您愿意,   也可以在this link中观看它的匹配方式   针对一些样本输入。


相关问题