让我们在下面的文本的Javascript括号
I want [this]. I want [this too]. I don't want \[this]
说我想要的[]
但不\[]
之间的任何内容。我会怎么做呢?到目前为止,我有/\[([^\]]+)\]/gi
。但它匹配了一切。
让我们在下面的文本的Javascript括号
I want [this]. I want [this too]. I don't want \[this]
说我想要的[]
但不\[]
之间的任何内容。我会怎么做呢?到目前为止,我有/\[([^\]]+)\]/gi
。但它匹配了一切。
使用这一个:/(?:^|[^\\])\[(.*?)\]/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/>");
}
/(?:[^\\]|^)\[([^\]]*)/g
内容是第一个捕捉组,$ 1
(?:^|[^\\])
一行的开头匹配或任何的不是斜线,不捕获。
\[
匹配一个开放的括号。
([^\]]*)
捕获的任何数量的不是封闭括号连续字符
\]
匹配的右括号
这不匹配[在开始的东西] –
啊谢谢!修复。 – paulgoblin
使用此正则表达式,其中第一匹配\[]
版本(但不捕获它,从而“扔它扔掉“),那么[]
案件,捕捉里面有什么:
var r = /\\\[.*?\]|\[(.*?)\]/g;
^^^^^^^^^ MATCH \[this]
^^^^^^^^^ MATCH [this]
环路与exec
让所有的比赛es:
while(match = r.exec(str)){
console.log(match[1]);
}
这不适用于'\ [no] [yes]'。 –
是的,它确实与那种情况:) http://regexr.com/3clmj –