【发布时间】:2016-02-26 11:23:12
【问题描述】:
我正在尝试在 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;
}
});
它匹配“红色”。 只有当我的查询是:
var myQuery = "I am looking for the red car";
所以我真的不习惯正则表达式,所以如果有人可以帮助我,那就太好了。
【问题讨论】:
-
您是否考虑过使用更大的功能,使用单独的正则表达式测试器?我正在考虑使用一系列 if 语句。
if MyText contains 'red', add red to $Result. If MyText contains 'bike', add bike to $Result ... -
这看起来不是一个非常持久的解决方案,不是吗?据我了解您的想法,不可能组合很多不同的查询,如果我有一个包含 4000 个项目的数组,那将是一场噩梦......
-
我已经设置了一个临时解决方案,目前似乎可以完成这项工作。我正在检查所有找到的结果并比较它们的长度。如果我只保留更长的关键字,那将意味着参数是组合的一个:
if(myRegEx.test(myQuery)){if(el.keyword.length>answer.length){answer = el.keyword;}}。但如果有更清洁的解决方案,我仍然可以做到。
标签: javascript arrays regex