我需要匹配这样的字符串:''foo''
但不在内部wiki链接时匹配:[[GNU Lesser General Public License|GNU ''Lesser'' General Public License]]
我的尝试是这样但它不起作用:
/''([^']*(?:'[^']+)*(?![^\]]+\]\]))''/g
答案 0 :(得分:0)
也许,你可以试试
''(*?)''((:?![^ \ [] *] {2}))
如果你不想匹配双引号字符串 在其中使用括号,您可以使用:
''(?[^ \ [\]] *)''((:?![^ \ [] *] {2}))
但请注意:嵌套括号可能会失败,例如:
[[ ''foo'' aksjdhkajd [[ asdasdasd ]] ]]
和没有打开的括号,如:
asdkjakldha ''akjdhkajdhksd'' ajsdlasjdlasd ]]
Javascript不支持 lookbehind ; lookbehind 可以增强正则表达式。
答案 1 :(得分:0)
我决定使用此代码在链接中处理斜体文本:
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
}
})