我正在尝试使用正则表达式来过滤已放入对象数组的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));
})
答案 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)));
})