Javascript 用于搜索的正则表达式,一种更精细的模糊搜索

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=

我现在有通用模糊搜索,因此如果键入“a”,它将返回包含a的每个单词。然而,我希望有一个更精确的搜索来实现这一点

例如,我有一个词:'Frankster Muniz'

搜索“frank”、“fr”、“f”、“mun”、“m”确实会返回“Frankster Muniz”

搜索“rank”、“ster”、“r”、“niz”不会返回任何内容


它必须匹配开头的单词,我不知道从哪里开始。我对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'