获取' []'之间的所有值在带有JavaScript的字符串上

时间:2014-10-25 21:46:03

标签: javascript regex

你们好吗? 今天我想问你是否可以帮我解决一个我无法独自解决的棘手问题。

I [have] strings that [are] like this.

我一直在寻找一种方法来获取“拥有”和“是”并使用JavaScript与它们形成一个数组。请注意,这是一个例子。有时我在大括号之间有几个子串,有时候我的琴弦上根本没有大括号。 我的尝试主要集中在使用.split方法和正则表达式来完成它,但我最接近成功的是能够仅提取第一个值。

你们中的任何人都会这么善良并借给我一个帮助吗?

我尝试使用以下内容。

.split(/[[]]/);

3 个答案:

答案 0 :(得分:3)

您可以在循环中使用exec()方法,将捕获的组的匹配结果推送到结果数组。如果字符串没有方括号,则会返回一个空匹配数组[]

var str = 'I [have] strings that [are] like this.'
var re  = /\[([^\]]*)]/g, 
matches = [];

while (m = re.exec(str)) {
  matches.push(m[1]);
}
console.log(matches) //=> [ 'have', 'are' ]

注意:只有在括号平衡时才能正常工作,不会在嵌套括号上执行。

答案 1 :(得分:1)

var str = "I [have] strings that [are] like this";
var res = str.split(" ");

res的结果将是一个包含值的数组:

I
[have]
strings 
that 
[are]
like 
this

如果只想获得大括号之间的值,可以使用以下正则表达式:

var str = "I [have] strings that [are] like this";
var result = [];

var pattern = /\[(.*?)\]/g;
var match;
while ((result = pattern.exec(str)) != null)
{
  result.push(match[1]);
}

这是JSFiddle的例子。

答案 2 :(得分:0)

这很简单:

'I [have] strings that [are] like this.'.match(/\[([^\]]*)]/g)