Javascript 如何使用正则表达式匹配没有双字符的字符串

Javascript 如何使用正则表达式匹配没有双字符的字符串,javascript,regex,Javascript,Regex,我有一个文本块,我想在javascript中运行一些正则表达式,以匹配[code]。我知道我可以用/\[code\]/g来做这件事 但是,我想忽略使用双括号的情况,如[[code]]。因此,换句话说,在字符串[code][[code]][code]中,只有第一个和最后一个匹配项 这可能吗 JS不支持消极的lookbehind断言,但在您的情况下,消极的lookbehind就足够了: '[code] [[code]] [code]'.match(/\[code\](?!\])/g) 此正则表达式

我有一个文本块,我想在javascript中运行一些正则表达式,以匹配
[code]
。我知道我可以用
/\[code\]/g
来做这件事

但是,我想忽略使用双括号的情况,如
[[code]]
。因此,换句话说,在字符串
[code][[code]][code]
中,只有第一个和最后一个匹配项

这可能吗


JS不支持消极的lookbehind断言,但在您的情况下,消极的lookbehind就足够了:

'[code] [[code]] [code]'.match(/\[code\](?!\])/g)
此正则表达式确保匹配的
[code]
后的下一个字符不是
]

UPD

可以改进为

'[code] [[code]] [code]'.match(/\[(?!\[)code\](?!\])/g)
感谢菲利克斯·克林

注意:如果是不成对的大括号,它的行为会很奇怪。

您可以使用
filter()
来实现以下目的:

var data = "[code] [[code]] [code]";
data = data.match(/\[+code\]+/g) // gives us ["[code]", "[[code]]", "[code]"]
    .filter(function(x) { return !x.match(/\[\[code\]\]/); });
// data is now ["[code]", "[code]"]

Felix的方法也很有效。

你也可以在开头添加
\[(?!\[)
。我还使用了一个消极的前瞻: