我正在尝试基于一组正则表达式表达式过滤数组。如果数组中的项目与任何正则表达式表达式匹配,我希望将其推送到另一个数组。我读到可以使用match()和test()来执行此操作,但是我不知道如何执行此操作。请帮助。谢谢。
这是我的正则表达式exp:
RAM-HEXA-*F-Q1
RAM-D-AT44-*-Q2
RAM-D-AT44-*-Q3
我的测试Arr:
testData={
[
{ value: 'RAM-HEXA-34F-Q1
' },
{ value: 'RAM-D-AT44-AQ-Q2
' },
{ value: 'RAM-D-AT44-ZS-Q3
' },
{ value: 'RAM-D-N7-9-Q3
' },
{ value: 'RAM-QUATRA-1F-Q1
' },
{ value: 'RAM-X-AT44-T-Q2
' }
]
}
所以基本上,我试图从testData中获取与reg表达式匹配的项。所以我试图得到一个看起来像这样的结果数组:
filteredData={
[
{ value: 'RAM-HEXA-34F-Q1
' },
{ value: 'RAM-D-AT44-AQ-Q2
' },
{ value: 'RAM-D-AT44-ZS-Q3
' }]
答案 0 :(得分:0)
您可以使用过滤器数组方法:
var regex1 = RegExp('RAM-HEXA-*(F-Q1)?');
var filtered = testData.filter((x) = >
{
return regex1.test(x.value);
})
与其他条件相同。
这是jsfiddle https://jsfiddle.net/3dgvw7yh/
中的示例答案 1 :(得分:0)
这是测试它的代码。请注意,您的所有正则表达式都不匹配您的数据,因此结果为空数组。
const regexes = [
'RAM-HEXA-*F-Q1',
'RAM-D-AT44-*-Q2',
'RAM-D-AT44-*-Q3',
];
const data = [
{ value: 'RAM-HEXA-34F-Q1' },
{ value: 'RAM-D-AT44-AQ-Q2' },
{ value: 'RAM-D-AT44-ZS-Q3' },
{ value: 'RAM-D-N7-9-Q3' },
{ value: 'RAM-QUATRA-1F-Q1' },
{ value: 'RAM-X-AT44-T-Q2' }
];
const filtered = data.filter(item => regexes.some(regex => item.value.match(regex)));
console.log(filtered);