gpt4 book ai didi

javascript - regex.exec() - 无法匹配字符串

转载 作者:搜寻专家 更新时间:2023-11-01 04:37:29 24 4
gpt4 key购买 nike

好吧,这就是交易。我正在使用 strapdown呈现 Markdown 帖子。捷联使用marked解析这些 markdown 帖子,后者又使用正则表达式文字

我已经尝试扩展标记以包含以下 Markdown “扩展”,如所述here (向苏菲大喊)。

背景信息

下划线扩展文字:/_(.*?)_/
突出显示扩展的文字:/==(.*?)==/

下划线测试代码(为清楚起见省略了一些代码):

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>)。

问题

marked 的内联词法分析器以 ^ 开始它所有的正则表达式文字.即:

tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
link: /^!?\[(inside)\]\(href\)/,
reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/

很自然地,我觉得我也应该这样做。我这样修改文字:
下划线扩展字面量:/^_(.*?)_/
突出显示扩展的文字:/^==(.*?)==/

然后,突出显示停止匹配。有趣的是,下划线继续匹配

我意识到这可能是一个需要了解标记的工作原理的问题,但通常不会有什么坏处...对吧?

更新1

你可以看到我做了什么(这需要 marked.js)here .要查看 marked 如何使用我的扩展解析 markdown,您可以查看第 658 行 here

最佳答案

我修改了 underlinestronghighlight 正则表达式,并将 |== 添加到 text 正则表达式使其工作:

text: /^[\s\S]+?(?=[\\<!\[_*`]|==| {2,}\n|$)/,
stronghighlight: /^==([^=]+)==/,
underline: /^_([^_]+)_/

我的jsfiddle测试页面是here .为了简单起见,我在开头复制了marked.js,并在适当的地方进行了编辑。

关于javascript - regex.exec() - 无法匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com