2016-09-26 68 views
0

我试图解析像下面的一个字符串,通过在Javascript中使用的正则表达式:正则表达式的Javascript解析字符串如“字符串1 [字符串2] [STRING3]”到阵列

string1[string2][string3] 

在其中“字符串1 “总是存在,与此同时其他字符串可能会错过,是2或20,但总是在方括号之间。 我想从以前的字符串来实现的结果是一个数组或者是这样的:

['string1', 'string2', 'string3'] 

我设法创建一个正则表达式,但它只是需要最后一个字符串方括号,而不是所有的之间“STRING3”他们,这是我试过的:

/[^\[]+(\[([^\]]+)\]){0,}/ 

希望有人可以帮忙。

谢谢!

+2

什么这样的情况:'字符串1 [字符串2 [STR] [STRING3]' – passion

+0

拆分与'/ [\ ] [] + /' –

+0

你不能用javascript来做。尝试别人的解决方案。 – revo

回答

1

最简单的将只是使用:

([^\[\]]+) 

基本上只是需要什么那没有方括号在它的字符串:https://regex101.com/r/uS5bZ2/1

然而,你可能会遇到麻烦,如果文本中包含流浪[],例如'string1[str[ing2][string3]',在这种情况下,我希望得到['string1', 'str[ing2', 'string3']。在这种情况下,你可以使用这个:https://jsfiddle.net/pt8e2p5w/1/

var s = 'string1[str[ing2][string3]' 
var matches = [''] 

var open = false 
for (i in s) { 
    if (s[i] == '[' && !open) { 
     matches.push('') 
     open = true 
    } else if (s[i] == ']' && open) { 
     open = false 
    } else { 
     matches[matches.length - 1] += s[i] 
    } 
} 

console.log(matches) 

输出:``

["string1", "str[ing2", "string3"] 
+1

谢谢你正在寻找的东西!象'string1 [str [ing2]'这样的内部方括号的问题并不存在,它是一个任意的字符串,所以它必须像我所说的格式。 谢谢! –