diff --git a/lib/marked.js b/lib/marked.js index bdfd01cb..51e50987 100644 --- a/lib/marked.js +++ b/lib/marked.js @@ -185,8 +185,9 @@ var inline = { escape: /^\\([\\`*{}\[\]()#+\-.!_])/, autolink: /^<([^ >]+(@|:\/)[^ >]+)>/, tag: /^|^<[^\n>]+>/, - link: /^!?\[([^\]]+)\]\s*\(([^\)]*)\)/, - reflink: /^!?\[([^\]]+)\]\s*\[([^\]]*)\]/, + link: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]\s*\(([^\)]*)\)/, + reflink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]\s*\[([^\]]*)\]/, + nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/, strong: /^__([^\0]+?)__(?!_)|^\*\*([^\0]+?)\*\*(?!\*)/, em: /^_([^_]+)_|^\*([^*]+)\*/, code: /^`([^`]+)`|^``([^\0]+?)``/ @@ -262,7 +263,7 @@ inline.lexer = function(str) { break; case 'link': case 'reflink': - if (key === 'reflink') { + if (key !== 'link') { link = cap[2] ? links[cap[2]] : links[cap[1]]; @@ -271,7 +272,7 @@ inline.lexer = function(str) { break; } } else { - text = /^\s*([^\s]*)(?:\s+"([^\n]+)")?\s*$/.exec(cap[2]); + text = /^\s*?(?:\s+"([^\n]+)")?\s*$/.exec(cap[2]); link = { href: text[1], title: text[2]