gpt4 book ai didi

javascript - 带有正则表达式的 Markdown 编辑器未生成所需的输出

转载 作者:行者123 更新时间:2023-11-30 15:34:30 25 4
gpt4 key购买 nike

Please check out this codepen for a working code example

我有两个正则表达式

//Matches ol:whatever: and turns it into <ol>whatever</ol>
var olRegex = /ol:[\s\r\f\n]?([\s\S\r\f\n]*)[\r\f\n]:/;

//Matches li:whatever: and turns it into <li>whatever</li>
var liRegex = /li:(.*):/gi;

如果我输入

ol:
li:This is item 1:
li:This is item 2:
:

它将被这个输出正确替换

<ol>
<li>This is item 1</li>
<li>This is item 2</li>
</ol>

但是如果我像这样添加 2 个 block

ol:
li:This is item 1:
li:This is item 2:
:
ol:
li:This is item 1:
li:This is item 2:
:

它没有产生我期望的结果,而是产生了这个输出

<ol>
<li>This is item 1</li>
<li>This is item 2</li>
: // I want the olRegex to stop matching here

ol:
<li>This is item 1</li>
<li>This is item 2</li>
</ol>

我要它输出

<ol>
<li>This is item 1</li>
<li>This is item 2</li>
</ol>
<ol>
<li>This is item 1</li>
<li>This is item 2</li>
</ol>

我的 olRegex 不包含 g 标志,为什么它在遇到第一个 : 时不停止匹配自己的线?

最佳答案

var olRegex =/ol:[\s\r\f\n]?([\s\S\r\f\n]*)[\r\f\n] 行中:/; * 的使用将尽可能读取匹配 [\s\S\r\f\n] 的字符,直到找到最后一个可能的字符[\r\f\n]:(贪心)。

您可以使用 *? 代替 *,它会尝试尽可能少地匹配这些字符(惰性)。

通过使用 g 标志执行此操作,您将得到所需的匹配组。

关于javascript - 带有正则表达式的 Markdown 编辑器未生成所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776558/

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