好吧,这就是交易。我正在使用捷联来呈现降价帖子。捷联使用标记来解析这些降价帖子,而后者又使用正则表达式文字。
我已尝试扩展标记以包含以下降价“扩展”,如此处所述(向soffes 大喊大叫)。
背景信息
下划线扩展/_(.*?)_/
的文字:高亮扩展的文字:/==(.*?)==/
下划线测试代码(为清楚起见省略了一些代码):
var src = "two new features to the marked.js inline lexer. ==highlighted text==, and _underlined text_";
var underline = /_(.*?)_/;
var cap = underline.exec(src);
document.write("<em class='underline'>"+cap[1]+"</em>");
它按预期工作(输出<em class="underline">underlined text</em>
)。
这是高亮测试代码(同样,省略了一些内容):
var src = "two new features to the marked.js inline lexer. ==highlighted text==, and _underlined text_";
var highlight = /==(.*?)==/;
var cap = highlight.exec(src);
document.write("<strong class='highlighted'>"+cap[1]+"</strong>");
再次按预期工作(输出<strong class='highlighted'>highlighted text</strong>
)。
问题
标记的内联词法分析器的所有正则表达式文字都以^
. IE:
tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
link: /^!?\[(inside)\]\(href\)/,
reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/
所以很自然,我觉得我也应该这样做。我像这样修改我的文字:
下划线扩展/^_(.*?)_/
的文字:高亮扩展的文字:/^==(.*?)==/
然后,突出显示停止匹配。有趣的是,下划线继续匹配。
我意识到这可能是一个需要了解标记的工作原理的问题,但问...通常不会有什么坏处……对吗?
更新 1
你可以在这里看到我已经完成的工作(需要marked.js)。要查看标记如何被告知使用我的扩展解析降价,您可以在此处查看第 658 行