Javascript 用于搜索的正则表达式,一种更精细的模糊搜索
我现在有通用模糊搜索,因此如果键入“a”,它将返回包含a的每个单词。然而,我希望有一个更精确的搜索来实现这一点 例如,我有一个词:'Frankster Muniz' 搜索“frank”、“fr”、“f”、“mun”、“m”确实会返回“Frankster Muniz” 搜索“rank”、“ster”、“r”、“niz”不会返回任何内容Javascript 用于搜索的正则表达式,一种更精细的模糊搜索,javascript,regex,search,full-text-search,Javascript,Regex,Search,Full Text Search,我现在有通用模糊搜索,因此如果键入“a”,它将返回包含a的每个单词。然而,我希望有一个更精确的搜索来实现这一点 例如,我有一个词:'Frankster Muniz' 搜索“frank”、“fr”、“f”、“mun”、“m”确实会返回“Frankster Muniz” 搜索“rank”、“ster”、“r”、“niz”不会返回任何内容 它必须匹配开头的单词,我不知道从哪里开始。我对regex很陌生。谢谢您可以从以下内容开始: 如果input是用户输入,name是数据库上的名称 var name=
它必须匹配开头的单词,我不知道从哪里开始。我对regex很陌生。谢谢您可以从以下内容开始: 如果
input
是用户输入,name
是数据库上的名称
var name=“Frankster Muniz”;
var input=“Frank”;
函数匹配(名称、输入){
var=0;
if(name.match(新RegExp(“\\b”+input+”*“,“i”))
匹配=1;
返回匹配;
}
console.log(匹配(名称,“Frank”);
日志(匹配(名称,“ster”)
您可以使用单词边界字符\b
在单词的开头开始匹配。因此,正则表达式的威力变成:
new RegExp(`\\b${input}`, 'i');
查看交互式示例:
let name=[
“弗兰克斯特·穆尼兹”,
“莎拉·沃林”,
“泰勒·罗宾逊”,
“罗纳德·穆尼兹”
];
让results=document.querySelector(“#results”);
让输入=document.querySelector('input');
addEventListener('input',function(){
findUsers(该值);
});
构建列表(名称);
函数查找器(输入){
让reg=newregexp(`b${input}`,'i');
let found=names.filter(name=>reg.test(name));
构建列表(已找到);
}
函数构建列表(名称){
让html='';
name.forEach(name=>html+=`${name} `);
results.innerHTML=html;
}
过滤器:
姓名:
您的尝试是什么?发布您的正则表达式以查看运行中的错误。类似于/\bfrank/i
?aka:RegExp(“\\b”+term,“i”)
通过测试如果要匹配完整的单词,请使用RegExp(`b${search}\\w*`i')
-不要忘记'search'
。