仅包含特定单词的过滤器数组[重复]
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 中的任何字符(将匹配 0
、1
、2
、3
、4
、5
、6
、7
、@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>
【讨论】:
以上是关于仅包含特定单词的过滤器数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章