Javascript 如何匹配斜体wiki标记,但不在wiki链接内

Javascript 如何匹配斜体wiki标记,但不在wiki链接内,javascript,regex,mediawiki,Javascript,Regex,Mediawiki,我需要像这样匹配字符串:“foo”,但在wiki链接中时不需要这样匹配:[[GNU Lesser通用公共许可证| GNU Lesser通用公共许可证]] 我的尝试是这样的,但不起作用: /''([^']*(?:'[^']+)*(?![^\]]+\]\]))''/g 也许,你可以试一下 ''(.*)''(?!(?:[^\[]*]{2})) 如果不想匹配双引号字符串 在括号内,您可以使用: ''([^\[\]*?)''((?:[^\[\]*]{2})) 但是,请注意:使用嵌套括号时,Can会失败,

我需要像这样匹配字符串:
“foo”
,但在wiki链接中时不需要这样匹配:
[[GNU Lesser通用公共许可证| GNU Lesser通用公共许可证]]

我的尝试是这样的,但不起作用:

/''([^']*(?:'[^']+)*(?![^\]]+\]\]))''/g

也许,你可以试一下

''(.*)''(?!(?:[^\[]*]{2}))

如果不想匹配双引号字符串 在括号内,您可以使用:

''([^\[\]*?)''((?:[^\[\]*]{2}))

但是,请注意:使用嵌套括号时,Can会失败,例如:

[[''foo''aksjdhkajd[[asdasdasd]]]]

关闭支架而不打开支架,如:

asdkjakdha“akjdhksd”ajsdlasjdlasd]]

Javascript不支持lookback; lookback可以增强正则表达式


看看这个:

我决定使用以下代码处理链接中的斜体文本:

text = text.replace(/\[\[([^\]]+)\]\]/g, function(_, gr) {
    gr = gr.split('|');
    if (gr.length == 1) {
        // normal wiki link
    } else {
        // wikilink with name and caption
        gr[1] = gr[1].replace(/''([^']+)''/gm, function(_, g) {
            // g is italic text
        });
        // gr[1] can contain italic text gr[0] is a link
    }
})

不要使用正则表达式。这不够正规。我建议这样做,一开始可以很轻松。使用并提取捕获的组#1