如何在某个单词后提取数字

时间:2015-03-25 08:55:26

标签: jquery

我在数组中有名字

868_KK_0_KK_0tab1_checkbox
868_KK_1_KK_0tab2_checkbox
868_ZZ_0_ZZ_0tab3_checkbox
868_ZZ_0_ZZ_0tab5_checkbox

正好在单词' tab'有一个数字。

是否可以提取这些数字并将它们推送到数组

这是我的代码

它只是一个没有逻辑的示例代码

http://jsfiddle.net/nx33jez6/5/

var temp_arry = [];

var jsonarray = [
{
    "name": "868_KK_0_KK_0tab1_checkbox"
}
,
 {
    "name": "868_KK_1_KK_0tab1_checkbox"
}
,
 {
    "name": "868_ZZ_0_ZZ_0tab3_checkbox"
}
,
 {
"name": "868_ZZ_1_ZZ_0tab2_checkbox"
}
];


for (var i = 0; i < jsonarray.length; i++) {
    var name = jsonarray[i].name;
}

请你告诉我怎么做。

4 个答案:

答案 0 :(得分:4)

你可以使用regular expression,因为:

var pattern = /tab(\d+)/,
    arr = [];
for (var i = 0; i < jsonarray.length; i++) {
    var name = jsonarray[i].name;
    arr.push(name.match(pattern)[1]);
}
console.log(arr);

其中\d+匹配一个或多个数字,括号()用于记住匹配的数字

Demo

答案 1 :(得分:0)

您可以使用正则表达式匹配,然后从匹配项中删除“标签”字样,如下所示:

var temp_arry = [];

for (var i = 0; i < jsonarray.length; i++) {
    var name = jsonarray[i].name;
    var tab = name.match(/tab[0-9]/)[0].replace('tab', '');
    temp_arry.push(tab);
}

console.log(temp_arry);

这显示了达到你想要的所有步骤,虽然像@DemoUser回答它可以更简洁地完成

答案 2 :(得分:0)

您可以使用Array.map,然后在Array.split上使用"tab"并获取第二个元素并在_上拆分,然后返回第一个元素

var arr = inputArr.map(function(str){
   return str.split("tab")[1].split("_")[0];
});

答案 3 :(得分:0)

或没有正则表达式:

arr.forEach(function(v){
  nr = v.split('_checkbox')[0].split('b')[1]; 
});