use*_*755 3 javascript regex reduce
我有一个JavaScript正则表达式列表,如下所示:
var list = [
'^/items/detail.*',
'^/items/settings.*',
'^/article/view/.*',
'^/home/purchase.*',
];
Run Code Online (Sandbox Code Playgroud)
我想看看字符串是否与数组中的正则表达式之一匹配。如果可能,我想使用reduce。
我已经试过了:
var text = "http://www.mypage.com/items/detail";
var result = list.reduce((a, b) =>
!!text.match(a) || !!text.match(b)
);
Run Code Online (Sandbox Code Playgroud)
但似乎不起作用。由于某种原因,它返回false。我尝试了各种变体,但找不到可行的变体。
您需要使用RegExp()并添加其他条件,a === true因为a在第二次迭代中该条件为true或false
var list = [
'/items/detail.*',
'^/items/settings.*',
'^/article/view/.*',
'^/home/purchase.*',
];
var text = "http://www.mypage.com/items/detail";
var result = list.reduce((a, b) =>
a === true || (a !== false && !!text.match(RegExp(a))) || !!text.match(RegExp(b))
);
console.log(result)Run Code Online (Sandbox Code Playgroud)
@zerkms建议的更简化的版本,通过提供额外initialValue的false
var list = [
'/items/detail.*',
'^/items/settings.*',
'^/article/view/.*',
'^/home/purchase.*',
];
var text = "http://www.mypage.com/items/detail";
var result = list.reduce((a, b) => a || RegExp(b).test(text), false)
console.log(result)Run Code Online (Sandbox Code Playgroud)