Javascript 如何精确匹配字符串并避免错误匹配?
后台-web应用后端javascript/dojo代码 我需要将用户输入字符串与可能的车型列表相匹配,但我遇到了不正确匹配的问题 假设用户输入:Javascript 如何精确匹配字符串并避免错误匹配?,javascript,regex,pattern-matching,Javascript,Regex,Pattern Matching,后台-web应用后端javascript/dojo代码 我需要将用户输入字符串与可能的车型列表相匹配,但我遇到了不正确匹配的问题 假设用户输入: Ford Fusion, S 60, and Volks Wagen 目前,我将在as中读到这一点 FORDFUSIONS60VOLKSWAGEN 在这方面,我将与一系列品牌和型号相匹配 问题是,在这种情况下,以及在许多其他情况下,您会得到类似于“S6”(奥迪)和“S60”(沃尔沃),或“雅阁”(本田)或“CC”(大众) 你知道如何避免这些模棱两可
Ford Fusion, S 60, and Volks Wagen
目前,我将在as中读到这一点
FORDFUSIONS60VOLKSWAGEN
在这方面,我将与一系列品牌和型号相匹配
问题是,在这种情况下,以及在许多其他情况下,您会得到类似于“S6”(奥迪)
和“S60”(沃尔沃)
,或“雅阁”(本田)
或“CC”(大众)
你知道如何避免这些模棱两可的匹配吗?要避免至少两个例子,你首先要匹配较长的名称(例如,对于“s6”之前的“s60”和“cc”之前的“accord”),如果没有匹配,则使用较短的一个。否则,使用较长的一个退出
如果要查找最长的匹配项,还可以检查结果名称中是否有一个包含在另一个名称中,并跳过它们。我将这样做: 对名称、型号和公司进行检查,如果它们追溯到同一引用,则您知道您得到了所需的内容。但是,如果您得到不同的结果,请继续尝试所有搜索结果的组合,直到它们匹配到单个引用 例如:
车型可以追溯到本田和福特,
编号可追溯到福特和宾利,
和
公司给福特
然后可以尝试列表_1、列表_2和列表_3的组合,其中:
list_1=[“本田”、“福特”]
list_2=['ford'、'bentley']
list_3=['ford']
然后,当您尝试所有组合(我推荐itertools.compositions
)时,您将得到一个在所有列表中常见的有效结果:ford
我希望这是清楚的。我知道我有点吹毛求疵。因为这个问题被标记了,我想你在寻找: 将匹配
“S6”
和“…S6…”
,但不匹配“S60”
,正如
/\bCC\b/i
将匹配
“CC”
和“CC”
,但不匹配“Accord”
“Accord”也许这不应该是一个免费的文本字段?如果由我决定的话。试着让客户“灵活”并且只需键入任何内容。据我所知,他们可以键入“我的一份****Hondi Accords”“正是由于您的示例所示的原因,您试图这样做会给您自己和您的应用程序造成太多的工作负载。什么是Hondi?你是说本田吗?听起来有点像现代?把它分为Make/Model——它会让你省去各种头痛——我不是做出UI/UX决策的人。不幸的是,我不得不把它作为一个自由文本字段来实现。为什么你会把它读作FORDFUSIONS60VOLKSWAGEN?我认为您应该使用ponaction,正确地分割输入,然后在查询中使用类似MySQL全文搜索()的东西来获得最佳匹配。否则,您将搜索与您的用户不同的内容。:)
/\bCC\b/i