打字稿过滤器阵列匹配正则表达式



我正在尝试根据一组正则表达式过滤数组。请阅读我可以使用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
' }
      ]
}

基本上,我试图从符合Reg Exprions的TestData中获取这些项目。因此,我试图获得一个看起来像这样的结果数组:

filteredData={
[
        { value: 'RAM-HEXA-34F-Q1
' },
        { value: 'RAM-D-AT44-AQ-Q2
' },
        { value: 'RAM-D-AT44-ZS-Q3
' }]

这是对其进行测试的代码。请注意,您的不发格符合您的数据,因此是空数组结果。

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);

您可以使用过滤器数组方法:

var regex1 = RegExp('RAM-HEXA-*(F-Q1)?');
var filtered = testData.filter((x) = > 
{
return regex1.test(x.value);
})

与其他条件相同。

这是jsfiddle中的示例https://jsfiddle.net/3dgvw7yh/

最新更新