正则表达式在JavaScript中使用array.filter

时间:2019-09-02 05:19:45

标签: javascript regex filter

我正在尝试使用正则表达式来过滤已放入对象数组的csv文件中的name列。如果输入确切的值,一切都会正常。

我希望“ king”匹配的值如下:

kingkong,金刚,金刚,king_kong,king11,kongking,kong-king,kong_king,kong king,11king

我尝试使用filter和find方法,但是我想使用filter返回多个值(如果存在)。我已经尝试过以下正则表达式,但即使正确,也无法找出正确的语法。

const CSVToJSON = require('csvtojson');
const user = "king";

CSVToJSON().fromFile("./locations.csv").then(source => {
    var found = source.filter(function(v, i){
    return ((v["name"]== /\bking.*/g));
})

4 个答案:

答案 0 :(得分:0)

您可以使用以下方法。

const CSVToJSON = require('csvtojson');


CSVToJSON().fromFile("./locations.csv").then(source => {
    var found = source.filter(function(v, i){
    return ((v["name"].match(/king/g)));
});

答案 1 :(得分:0)

但是,您的示例模式显示 king 可能位于目标的开头或结尾(bot不能同时具有前缀和后缀)。如果我是对的,那意味着您不需要正则表达式。

const CSVToJSON = require('csvtojson');
const user = "king";

CSVToJSON().fromFile("./locations.csv").then(source => {
    var found = source.filter((v, i) => v.startsWith(user) || v.endsWith(user)) 
    /*rest of the code */
});

如果 king 可以站在任何地方,则可以直接使用includes

答案 2 :(得分:0)

return语句可能类似于

return ((/king/g).test(v["name"]));

OR

return ((v["name"].match(/king/g)));

两者都应该起作用

答案 3 :(得分:0)

这是可行的,我对JavaScript完全陌生:

      const user = args;
      var regex = new RegExp(user, "g");


      CSVToJSON().fromFile("./locations.csv").then(source => {
          var found = source.filter(function(v, i){
          return ((v["name"].match(regex)));
        })