【发布时间】:2019-02-18 07:30:59
【问题描述】:
我有一个对象,其键为要搜索的某个名称并评估其分数,如下所示:
{
'a': 344,
'apple': 345354,
'orange': 320,
'mango': 39999,
.
.
.
}
地图有大约 50 万个键。我需要做一个模糊搜索来为ornge之类的一些文本创建一个测试自动建议功能(支持拼写错误),它应该匹配orange,并返回所有匹配的单词。此外,匹配可以出现在字符串中的任何位置,而不仅仅是在开头。我怎么能用正则表达式做到这一点?我正在尝试以下方法:
(?=.*\ornge\b).*
但它不起作用。我怎么能这样做?
使用regex 可能不是最佳解决方案。您能建议一种替代方法吗?
【问题讨论】:
-
可能是
o.*r.*n.*g.*e? -
恕我直言,您不应该尝试在正则表达式中执行此操作。
-
@appleapple 好的。你能推荐一个方法吗?
-
您应该找到一个库来执行此操作,或者至少您需要更清楚地定义您想要匹配的内容(以便实际实现它)。我对此不太熟悉,所以我只能建议。
-
有多种模糊搜索算法。您可以在搜索中引入某种通配符(例如
*),或者您可以对输入进行有效排列。在后一种情况下,您需要实现近似字符串匹配算法。有一些建议here.
标签: javascript regex