2016-09-07 149 views
0

我在JavaScript中生成了一系列数组,但需要删除方括号外的所有数字。删除不在JS中的方括号内的数字

现在我知道我需要使用某种形式的正则表达式,但我不确定如何在这种情况下使用它。

这是我的阵列的一个示例:

1 [1,0.031410759078128],2 [2,0.062790519529313],3 [3,0.094108313318514],4 [4,0.1253332335643],5 [5,0.15643446504023]

如何删除所有不在方括号内的数字?

+1

你想保留之间的逗号?括号内是否有括号?期望的输出是[1,0.031410759078128],[2,0.062790519529313],[3,0.094108313318514],[4,0.1253332335643],[5,0.15643446504023]?我想象你可以编写一个函数来完成这个工作,当你遍历字符串时,跟踪你是否在括号内的状态。 –

+0

您正在生成数组?如果是这样,那么它应该正确完成,这看起来像一个字符串集,而不是一个数组。您可以通过数组的索引提取数组,这就是它。你能澄清更多吗? –

+0

我猜你得到否决票的原因是你没有表明你先试过任何东西。 – HeadCode

回答

1

你会想要使用zero-width lookahead assertion。下面的正则表达式字符串将按顺序选择直接位于'['之前的所有数字。

/([0-9]+)(?=\[)+/g 

Rexexr.com是一个很好的资源。 http://regexr.com/3e63k

+0

谢谢,这就是我一直在寻找的东西,还有很棒的链接,我想我会把它收藏起来。 – D4v3

0

var stripNumsOutside = function(s) { 
 
    var result = ""; 
 
    var insideBrackets = false; 
 
    var curChar; 
 
    for (var i = 0; 
 
     (i < s.length); i++) { 
 
     curChar = s[i]; 
 
     if (curChar == "[") { 
 
      insideBrackets = true; 
 
     } 
 
     if ((insideBrackets) || (curChar == ",")) { 
 
      result += curChar; 
 
     }; 
 
     if (curChar == "]") { 
 
      insideBrackets = false; 
 
     }; 
 
    } 
 

 
    return result; 
 
} 
 

 
console.log(stripNumsOutside("1[1,0.031410759078128],2[2,0.062790519529313],3[3,0.094108313318514],4[4,0.1253332335643],5[5,0.15643446504023]"));

+0

通常最好在答案中加上叙述,在这种情况下还要注意为什么你认为正则表达式不起作用或者不是最好的。 – 2016-09-07 03:39:22

+0

@torazaburo够公平的。在正则表达式启动之前,我正在处理这个问题(请参阅上面的注释),并且想要显示一个替代方案。我认为正则表达式很好,可能会更好。我认为这可能会更容易遵循或说明不同的思考方式。 –