我试图通过在Javascript中使用regexp来解析下面的字符串:
string1[string2][string3]
其中" string1"总是存在,同时其他字符串可能会错过,2或20,但总是在方括号之间。 我想从前一个字符串实现的结果是一个数组或类似的东西:
['string1', 'string2', 'string3']
我设法创建一个正则表达式,但它只需要最后一个字符串" string3"在方括号之间而不是所有这些,这就是我试过的:
/[^\[]+(\[([^\]]+)\]){0,}/
希望有人可以提供帮助。
谢谢!
答案 0 :(得分: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"]