Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何精确匹配字符串并避免错误匹配?_Javascript_Regex_Pattern Matching - Fatal编程技术网

Javascript 如何精确匹配字符串并避免错误匹配?

Javascript 如何精确匹配字符串并避免错误匹配?,javascript,regex,pattern-matching,Javascript,Regex,Pattern Matching,后台-web应用后端javascript/dojo代码 我需要将用户输入字符串与可能的车型列表相匹配,但我遇到了不正确匹配的问题 假设用户输入: Ford Fusion, S 60, and Volks Wagen 目前,我将在as中读到这一点 FORDFUSIONS60VOLKSWAGEN 在这方面,我将与一系列品牌和型号相匹配 问题是,在这种情况下,以及在许多其他情况下,您会得到类似于“S6”(奥迪)和“S60”(沃尔沃),或“雅阁”(本田)或“CC”(大众) 你知道如何避免这些模棱两可

后台-web应用后端javascript/dojo代码

我需要将用户输入字符串与可能的车型列表相匹配,但我遇到了不正确匹配的问题

假设用户输入:

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