jquery grep,用正则表达式过滤

时间:2014-09-18 14:46:25

标签: javascript jquery regex

我将以我对正则表达式非常糟糕的陈述开始这个问题。

说这个,我想知道是否有可能使用jquery $ .grep过滤数组,匹配具有特定字符串的字符串,如下所示:

 var a = ["ABC:12", "xx:ABC:2", "ASD:3", "xx:ASD:5"];
 var s = a.split(",");

 var array = $.grep(s, function(x, y) {
   return ??????;
 });

所以在应用$ .grep或任何其他可能有帮助的功能之后,我将需要在":"有ABC的人数,所以我的新阵列将是:

array[12, 2];

对此有任何帮助???我真的很感激!

2 个答案:

答案 0 :(得分:2)

$.grep仅选择满足过滤函数的数组元素。

您需要从grepped数组中$.map所有数字的额外步骤。

var a = ["ABC:12", "xx:ABC:2", "ASD:3", "xx:ASD:5"];

var b = $.grep(a, function(item) {
    return item.indexOf("ABC:") >= 0;
});

var array = $.map(b, function(item) {
    return item.split(":").pop();
});

答案 1 :(得分:1)

尝试

var a = ["ABC:12", "xx:ABC:2", "ASD:3", "xx:ASD:5"];

// map array ,
// test array items for "ABC" string ,
// filter `Number` in strings containing "ABC" ,
// return filtered Numbers , in newly mapped array
var s = $.map(a, function(n) {
  return (/ABC/.test(n) ? Number(n.split(":").filter(Number)) : null)
}); // [12, 2]