我们在下面的文字中说
I want [this]. I want [this too]. I don't want \[this]
我想要[]
但不是\[]
之间的任何内容。我该怎么做呢?到目前为止,我已经/\[([^\]]+)\]/gi
了。但它符合一切。
答案 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
(?:^|[^\\])
匹配一行的开头或任何不是斜线,非捕获的内容。
\[
与开放式括号匹配。
([^\]]*)
捕获任意数量的非闭括号的连续字符
\]
匹配右括号