我正在尝试寻找代码栅栏 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/