你们好吗? 今天我想问你是否可以帮我解决一个我无法独自解决的棘手问题。
I [have] strings that [are] like this.
我一直在寻找一种方法来获取“拥有”和“是”并使用JavaScript与它们形成一个数组。请注意,这是一个例子。有时我在大括号之间有几个子串,有时候我的琴弦上根本没有大括号。
我的尝试主要集中在使用.split
方法和正则表达式来完成它,但我最接近成功的是能够仅提取第一个值。
你们中的任何人都会这么善良并借给我一个帮助吗?
我尝试使用以下内容。
.split(/[[]]/);
答案 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)