使用正则表达式将字符串拆分为数组" [element1] [element2]"

时间:2018-03-29 14:35:33

标签: javascript regex

我有以下字符串:

var search = "[title|Asc][description|Desc]";

我想要一个阵列:

[
    "title|Asc",
    "description|Desc"
]

我尝试过各种各样的注册表,但我对此并不了解。

var matches = search.split(/[^a-zA-Z0-9|]/);

我有机会得到一些帮助吗?

3 个答案:

答案 0 :(得分:1)

使用splitfilter

var output = search.split(/[\[\]]+/).filter( s => s.length > 0 );

<强>演示

&#13;
&#13;
var search = "[title|Asc][description|Desc]";
var output = search.split(/[\[\]]+/).filter( s => s.length > 0 );
console.log(output);
&#13;
&#13;
&#13;

<强>解释

  • split /[\[\]]+/[]

  • 的一个或多个字符类
  • filter清空物品。

答案 1 :(得分:1)

删除第一个和最后一个[],然后按][

拆分

search.substring(1,search.length-1).split('][')

var search = "[title|Asc][description|Desc]";

console.log(search.substring(1,search.length-1).split(']['))

答案 2 :(得分:1)

最好使用match代替split来确保我们匹配[]之间的字符串:

&#13;
&#13;
const regex = /\[([^\]]*)\]/g;
const str = `[title|Asc][description|Desc]`;
let m;

while ((m = regex.exec(str)) !== null) {
   console.log(m[1]);
}
&#13;
&#13;
&#13;

RegEx Demo