【发布时间】:2019-03-05 22:21:57
【问题描述】:
我的代码中有一个正则表达式搜索,用于通过给定的字符串在我的数据库中获取名称。我遇到的问题是,如果我有一个名字“Jim”和一个名字“Jimmy”,出于某种原因,我总是得到“Jimmy”。
let regexp = new RegExp(userName, "i");
let name = await names.findOne({ name: regexp });
所以当我输入“Jimmy”时,我得到了 Jimmy,“Jimm”我得到了 Jimmy,一切都很好,但是当我试图找到“Jim”时,我得到了 Jimmy,所以我没有办法得到 Jim。
如果他们有 ( 或 ) 我也找不到名字?例如:Tom (Thomas),我准确搜索“Tom (Thomas)”,但根本找不到,但这可能是 Mongoose 的问题。
【问题讨论】:
-
你能把正则表达式放进去吗?
-
不是只找到一个匹配,而是获取所有匹配。然后从 seach 字符串中计算Levenshtein distance 到所有匹配项中找到最接近的那个。
-
(和)在正则表达式中有特殊含义,如果你想从字面上匹配它们,你需要将它们转义。您确定首先需要使用正则表达式吗? -
我会转义它们,但它们在一个变量中,并且该变量是用户的输入,所以我需要一种方法来告诉正则表达式忽略 () 或其他东西
-
您确定需要使用正则表达式吗?您可以使用
String.prototype.includes()来查找文字子字符串吗?
标签: javascript regex mongoose