我试图在JS中使用正则表达式来检查数组的内容是否可以匹配特定的字符串。字符串可以由许多单词组成,内容的数组也是如此。 我的问题是:
var myQuery = "I am looking for the red bike";
var myArray = [{kid:24,keyword:"red"}, {kid:32,keyword:"bike"}, {kid:51,keyword:"red bike"}];
在这种情况下,我不想只获得红色"或"自行车"但是"红色自行车"因为它是最好的匹配。 现在我已经恢复了请求,但它并不结合:
myArray.some(function (el) {
var myRegEx = new RegExp(el.keyword, "gi");
if (myRegEx.test(myQuery)) {
return true;
}
});
匹配" red"。 这个功能应该给我" red"只有我的查询是:
var myQuery = "I am looking for the red car";
所以我真的不习惯regEx,所以如果有人能帮助我,那就太好了。
答案 0 :(得分:0)
您可以使用Levenshtein distance实现,即计算两个字符串(myQuery
与每个项keyword
)之间的差异或距离,然后对数组进行排序并返回{{1}最低距离作为最佳匹配。
你可以找到一个Levenshtein javascript实现here(还没有测试过它与其他的相比有多好)
keyword
演示 - >的 http://jsfiddle.net/hoo207o3/ 强>