【问题标题】:Filter array containing only specific word [duplicate]仅包含特定单词的过滤器数组[重复]
【发布时间】:2019-06-16 16:45:12
【问题描述】:

我有一个数组列表。我想获取以“tar”开头的项目,然后是数字

var array = ["dataseqno", "yrsno", "tar01", "tar02", "tar03", "tar04", "tar05", "tar06", "tar07", "tar08", "tar09", "tar10", "tar11", "tar12", "status"]

我将对这个数组进行循环并使用正则表达式进行检查。这是我尝试过的正则表达式。但我无法解决数字后跟“焦油”的问题。

.match(/^tar+\[0-9]/)

【问题讨论】:

  • @CertainPerformance 已编辑。谢谢
  • Array#filter 怎么样?
  • 试试^tar[0-9]+

标签: javascript jquery arrays regex string


【解决方案1】:

在数组上使用filter(),并将您的正则表达式更改为^tar[0-9]+,如下所示:

var array = ["dataseqno", "yrsno", "tar01", "tar02", "tar03", "tar04", "tar05", "tar06", "tar07", "tar08", "tar09", "tar10", "tar11", "tar12", "status"];

var match = array.filter(str => str.match(/^tar[0-9]+/));

console.log(match);

这将检查元素是否在字符串的开头以tar 开头,然后包含任何数字。


正则表达式分解,逐个字符:

^

匹配字符串的开头

tar

匹配字符串tar

[0-9]

匹配字符集 0-9 中的任何字符(将匹配 01234567、@987654337 @,9)

+

匹配上一个选择器中的一个或多个

【讨论】:

    【解决方案2】:

    它将根据正则表达式过滤数组,该表达式基本上找到单词 tar 并检查它是否后跟一个数字

    var array = ["dataseqno", "yrsno", "tar01", "tar02", "tar03", "tar04", "tar05", "tar06", "tar07", "tar08", "tar09", "tar10", "tar11", "tar12", "status"]
    console.log(array.filter((e)=>e.match(/^tar[0-9]+/)));
       

    【讨论】:

    • 更好:您可以将其更改为单行:array.filter(e => e.match(/^tar[0-9]+/)); 通过使用箭头函数的隐式返回;)
    【解决方案3】:

    使用此代码:

    let array = ["dataseqno", "yrsno", "tar01", "tar02", "tar03", "tar04", "tar05", "tar06", "tar07", "tar08", "tar09", "tar10", "tar11", "tar12", "status"]
    
    const patt = new RegExp("tar+[0-9]");
    
    let result = array.filter( x => patt.test(x) )
    
    console.log(result);
    

    【讨论】:

      【解决方案4】:

      根据您的要求,已尝试模拟。请尝试。谢谢

      var names = ["dataseqno", "yrsno", "tar01", "tar02", "tar03", "tar04", "tar05", "tar06", "tar07", "tar08", "tar09", "tar10", "tar11", "tar12", "status"]
      
      // Filter names
      var filteredNames = 
        $.grep(names, function(v) {
          if(v.match(/^tar+\d{1,}/)){
            return v;
          }
          
       });
      // show to console
      $.each(filteredNames, function( i, val ) {
        console.log(val);
      });
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

      【讨论】:

        猜你喜欢
        • 2018-08-07
        • 2021-01-10
        • 1970-01-01
        • 2022-11-28
        • 2012-11-23
        • 2019-05-11
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多