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