仅包含特定单词的过滤器数组[重复]

Posted

技术标签:

【中文标题】仅包含特定单词的过滤器数组[重复]【英文标题】: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]+ 【参考方案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+\d1,/))
      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>

【讨论】:

以上是关于仅包含特定单词的过滤器数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中过滤包含属性的数组

JQ 过滤嵌套对象中的字段

过滤数组以具有唯一值[重复]

SQL Server:仅过滤包含特定文本的行之后的行

如何仅针对特定 url 添加 Spring Security 验证码过滤器

过滤提琴手以仅捕获特定域的请求