在两个重复出现的字符之间拆分字符串

时间:2016-07-15 14:54:02

标签: javascript

我在变量中有动态值,每个变量用[和]例如

分隔
JUNE 30
RC4 Now Available
Today we’re happy to announce that we are shipping Angular 2.0.0-rc.4.

有没有办法使用split函数从上面提取[和]之间的值?

var data="[Continuing] [Returning] "; or
var data="[ACCT_BBA] "; or
var data="[12001] [12009] [21077] [13880] ";
var data="[13880] ";

e.g。在最后一个检索示例:12001,12009,21077,13880

4 个答案:

答案 0 :(得分:5)

data.slice(1, -2).split("] [")

应该完成这项工作,或者如果您的开始和结束不确定

data.replace(/^\s*\[|\]\s*$/g, "").split("] [")

或者,如果您需要更复杂的东西,通常选择.match使用全局正则表达式,或者如果需要处理任意嵌套结构,则构建自己的解析器。

答案 1 :(得分:2)

使用

data.split('] [').map(function (item) { return item.replace("]", "").replace("[", "")})
像这样:

    //var data="[Continuing] [Returning]";
    // var data="[ACCT_BBA]"; 
    var data="[12001] [12009] [21077] [13880]";

    var res = data.split('] [').map(function (item) { return item.replace("]", "").replace("[", "")})
    console.log(res)

答案 2 :(得分:1)

data.match(/\[(\w+)\]/g).map(e => e.slice(1, -1))

怎么样?

您可以将\w替换为字符范围,例如[a-zA-Z0-9_]

答案 3 :(得分:0)

如果您这样做,请执行以下操作:

var data="[12001] [12009] [21077] [13880]";

var arr = data.split(" ");

for(let i = 0; i < arr.length; i++){
    arr[i] = arr[i].replace('[','');
    arr[i] = arr[i].replace(']','');
}
console.log(arr);

只是一个非常基本的例子。