正则表达式在括号之间获取字符串

时间:2015-11-10 11:44:36

标签: javascript regex string

我在括号中注明了一个带有0-n参数的字符串。 我想得到括号之间的词。例如:

  

这是[测试]

应该返回数组['is', 'test']

我不是正则表达的专家,而且我已经失去了很多时间。 这是我目前所拥有的,但它不起作用。

var regex = /\[([^}]+)\]/;
var m = "this [is] a [test]".match(regex);
console.log(m);

非常感谢任何帮助。

JsFiddle

3 个答案:

答案 0 :(得分:3)

使用以下正则表达式,您使用了错误的括号

Regex Demo and Explanation

/\[([^\]]+)\]/

您也可以使用

Regex Demo and Explanation

/\[(\w+)\]/

答案 1 :(得分:3)

由于您需要捕获的文本,因此无法使用String#match。将RegExp#exec与全局标记一起使用:



var regex = /\[([^\]]+)]/g; // RegExp has a global flag to find all matches
var arr = [];                // An array for our captured texts
while ((m = regex.exec("this [is] a [test]")) !== null) {
       arr.push(m[1]);       // Captured text is inside Group 1
}
console.log(arr);




正则表达式细分:

  • \[ - 打开文字方括号
  • ([^\]]+) - 与]以外的任何符号匹配的捕获组(请注意,必须在字符类中对其进行转义)
  • ] - 文字](请注意,它不必在字符类之外进行转义)。

答案 2 :(得分:0)

您可以尝试使用此正则表达式:

\[(.*?)\]

<强> REGEX DEMO