【问题标题】:TypeScript filter array matching regex expressionTypeScript 过滤器数组匹配正则表达式
【发布时间】:2019-10-06 14:28:53
【问题描述】:

我正在尝试根据一组正则表达式过滤数组。如果数组中的项目与任何正则表达式匹配,我想将它推送到不同的数组。我读到我可以使用 match()和 test() 来执行此操作,但我无法理解如何执行此操作。请帮助。提前致谢。

这是我的正则表达式:

RAM-HEXA-*F-Q1
RAM-D-AT44-*-Q2
RAM-D-AT44-*-Q3

我的测试编曲:

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
' }]

【问题讨论】:

    标签: arrays regex angular typescript filter


    【解决方案1】:

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

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

    其他条件同理。

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

    【讨论】:

    • 获取错误“布尔”类型的参数不可分配给类型的参数
    • 我忘记了 add value 属性。
    • 我已经调整了你的正则表达式它不正确
    【解决方案2】:

    这是测试它的代码。请注意,您的正则表达式与您的数据不匹配,因此是空数组结果。

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

    【讨论】:

    • 我收到错误类型“RegExpMatchArray”不可分配给类型“布尔”
    • 还有 RAM-HEXA-34F-Q1,RAM-D-AT44-AQ-Q2 和 RAM-D-AT44-ZS-Q3 应该匹配。正则表达式中的 * 表示任何字符都可以存在.
    • @rock11 我制作了有效数据,而你没有。处理您的模型,它应该可以工作。不,您的正则表达式没有正确编写。 * 表示其后面的字符可以出现 0 到 N 次,并不表示它匹配任何字符。这就是 SQL 的工作方式,而不是正则表达式的工作方式。
    • 我想匹配任何字符。你能告诉我要改变什么来完成那个吗。我是新手
    • 任何字符一次都是.。对于多个多个字符,请使用 .*。对于至少一个字符,请使用.+
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2019-01-13
    • 1970-01-01
    相关资源
    最近更新 更多