仅包含特定单词的过滤器数组

时间:2019-01-23 06:43:32

标签: javascript jquery arrays regex string

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

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

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

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

4 个答案:

答案 0 :(得分:5)

在数组上使用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中的任何字符(将匹配01234,{{1} },5678

9

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

答案 1 :(得分:4)

它将根据正则表达式过滤数组,该表达式基本上会找到单词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]+/)));
   

答案 2 :(得分:0)

使用此代码:

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

答案 3 :(得分:0)

根据您的要求,尝试进行模拟。请试试。 thnx

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>