javascript - 代码栅栏 Markdown 的正则表达式。简单吗?

标签 javascript regex

我正在尝试寻找代码栅栏 Markdown 的正则表达式

```

some code

```

它应该匹配模式,然后存储在 Javascript 数组中

首先我做了这段代码:

```+\n[\s\S]+```+

但是,因为``` 不表示开始-结束。如果我有多个代码围栏,它会像下面这样选择整个作为单个选择:

```

some code

```

```

some code

```

我调查了marked然后代码在下面找到了一些东西

fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/

然而,这似乎只是第一次命中。

什么是正确的正则表达式?如果太复杂,我想我可以通过 trim 结果来构造数组。

如果有优雅的正则表达式,我会选择它。

最佳答案

[\s\S]+ 是贪心的,也匹配围栏定界符,因此匹配太多。您有两个选择:

要么使量词惰性化,以便匹配尽可能少的字符:

/```\n[\s\S]+?```/g

或者使用 negative lookahead assertion以确保您不会跨越栅栏边界进行匹配:

/```\n(?:(?!```)[\s\S])+```/g

/g 全局修饰符允许正则表达式匹配多次。

关于javascript - 代码栅栏 Markdown 的正则表达式。简单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18032561/

相关文章:

javascript - 让 Kinetic 使用我现有的 Canvas

javascript - 如何在提交时从 React-Bootstrap 表单中获取值?

javascript - 在javascript中的第一个数字之前获取一个子字符串

javascript - ng-pattern 与脚本验证

javascript - 从字符串中删除点和空格

javascript - 在 Javascript 中访问对象的属性

javascript - 能够在 Firefox 中加载初始化脚本吗?

javascript - VideoJS : Stopping video on modal close and not embedding in page

c# - .NET 正则表达式匹配和替换

python - python3中转义XML字符串的未转义数据