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

How can I use regex to match a string without double characters

本文关键字:字符 字符串 何使用 正则表达式      更新时间:2023-09-26

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

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

这可能吗?

http://regexr.com/395kr

JS不支持负向后看断言,但在您的情况下,似乎负向后看已经足够了:

'[code] [[code]] [code]'.match(/'[code'](?!'])/g)

这个正则表达式确保[code]之后的下一个字符不是]

乌利希期刊指南:

可以改进为

'[code] [[code]] [code]'.match(/'[(?!'[)code'](?!'])/g)

感谢Felix Kling。

注意:对于未配对的大括号,它的行为会很奇怪。

您可以使用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的方法也很有效。