括号之间的Javascript正则表达式

时间:2016-01-26 01:24:46

标签: javascript regex parsing

我们在下面的文字中说

I want [this]. I want [this too]. I don't want \[this]

我想要[]但不是\[]之间的任何内容。我该怎么做呢?到目前为止,我已经/\[([^\]]+)\]/gi了。但它符合一切。

3 个答案:

答案 0 :(得分:0)

使用这个:/(?:^|[^\\])\[(.*?)\]/gi

以下是一个有效的例子:http://regexr.com/3clja

  • ?:非捕获组
  • ^|[^\\]字符串的缩写或除\
  • 之外的任何内容
  • \[(.*?)\]匹配[]
  • 之间的任何内容

这是一个片段:

var string = "[this i want]I want [this]. I want [this too]. I don't want \\[no]";
var regex = /(?:^|[^\\])\[(.*?)\]/gi;
var match = null;

document.write(string + "<br/><br/><b>Matches</b>:<br/> ");
while(match = regex.exec(string)){
   document.write(match[1] + "<br/>");
}

答案 1 :(得分:0)

使用此正则表达式,它首先匹配\[]版本(但不会捕获它,因此&#34;扔掉它&#34;),然后是[]个案例,捕获里面是什么:

var r = /\\\[.*?\]|\[(.*?)\]/g;
         ^^^^^^^^^                  MATCH \[this]
                   ^^^^^^^^^        MATCH [this]

循环exec以获取所有匹配项:

while(match = r.exec(str)){
  console.log(match[1]); 
}

答案 2 :(得分:-1)

/(?:[^\\]|^)\[([^\]]*)/g

内容位于第一个捕获组中,$ 1

(?:^|[^\\])匹配一行的开头或任何不是斜线,非捕获的内容。

\[与开放式括号匹配。

([^\]]*)捕获任意数量的非闭括号的连续字符

\]匹配右括号