正则表达式与给定字符串最接近

时间:2019-03-05 22:21:58

标签: javascript regex mongoose

我在代码中进行了正则表达式搜索,以通过给定的字符串获取数据库中的名称。我遇到的问题是,如果我有一个名字“ Jim”和一个名字“ Jimmy”,由于某种原因,我总会得到“ Jimmy”。

let regexp = new RegExp(userName, "i");
let name = await names.findOne({ name: regexp });

因此,当我输入“ Jimmy”时,我会得到Jimmy,“ Jimm”时,我会得到Jimmy,但一切都很好,但是当我尝试找到“ Jim”时,我就会得到Jimmy,所以我没有办法得到Jim。

如果有(或),我也找不到名字?例如:汤姆(托马斯),而我搜索的是“汤姆(托马斯)”,根本找不到它,但这可能是猫鼬的问题。

1 个答案:

答案 0 :(得分:0)

我认为这与您如何订购数据库或至少从数据库中查询结果有关。您可以对表格进行排序,也可以对查询结果进行排序。

尝试使用以下一种(字母或反向字母):

let name = await names.sort({ name: 1 }).findOne({ name: regexp });
let name = await names.sort({ name: -1 }).findOne({ name: regexp });

对于第二个问题,您想调查“模糊匹配”是什么,以便像Tom这样的事物可以返回像Thomas这样的结果。

尝试看看这个:

Fuzzy Searching with Mongodb?