正则表达式:除了方括号之外,如何获得大括号中的值

时间:2014-02-15 06:37:55

标签: javascript regex

我需要在Javascript中使用正则表达式在下面的字符串中仅获取“Callout”值。

str = "aaa {Callout [apple]} bbbb";

3 个答案:

答案 0 :(得分:1)

您可以使用前瞻和组匹配:

\{(\w+)(?=\b)

Regular expression visualization

See Demo

JS代码:

var re = new RegExp(/\{(\w+)(?=\b)/);
var m = re.exec("aaa {Callout [apple]} bbbb");
alert(m[1]);  

答案 1 :(得分:1)

在我看来,保持简单。如果您希望字符串中的第一个匹配项通过result[0] ..

访问它
var string = "asdfadsfsad {Callout1 [callout1]} dasdfsadf {Callout2 [callout2]} ccc]";
var result = string.match(/[^{]+(?=\[)/g);
console.log(result[0]); // => "Callout1 "

对于所有比赛,只需直接访问result

console.log(result); // => [ 'Callout1 ', 'Callout2 ' ]

正则表达式:

[^{]+          any character except: '{' (1 or more times)
 (?=           look ahead to see if there is:
  \[           '['
 )             end of look-ahead

答案 2 :(得分:0)

试试这个

{(.*?)\[

Regex Demo

var myString = "asdfadsfsad {Callout [callout1]} dasdfsadf {Callout [callout2]} ccc]";
var myRegexp = /{(.*?)\[/g;
var match = myRegexp.exec(myString);
alert(match[1]);  

Working JS Fiddle