Javascript 代码围栏标记的正则表达式。简单吗?
我正在尝试查找代码围栏标记的正则表达式Javascript 代码围栏标记的正则表达式。简单吗?,javascript,regex,Javascript,Regex,我正在尝试查找代码围栏标记的正则表达式 ``` some code ``` 它应该与模式匹配,然后存储在Javascript数组中 首先我做了这个代码: ```+\n[\s\S]+```+ 但是,因为“``并不表示开始和结束。如果我有多个代码围栏,它会选择整体作为单个选择,如下所示: ``` some code ``` ``` some code ``` 我调查了代码,然后发现了下面的内容 fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S
```
some code
```
它应该与模式匹配,然后存储在Javascript数组中
首先我做了这个代码:
```+\n[\s\S]+```+
但是,因为“``并不表示开始和结束。如果我有多个代码围栏,它会选择整体作为单个选择,如下所示:
```
some code
```
```
some code
```
我调查了代码,然后发现了下面的内容
fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/
然而,这似乎只是第一次成功
什么是合适的正则表达式?如果它太复杂,我想我可以通过修剪结果来构造数组
如果有一个优雅的正则表达式,我会选择它。
[\s\s]+
是贪婪的,同时匹配栅栏分隔符,因此匹配太多。您有两个选择:
或者使量词变懒,使其匹配尽可能少的字符:
/```\n[\s\S]+?```/g
或者使用以下选项来确保您不跨越栅栏边界:
/```\n(?:(?!```)[\s\S])+```/g
/g
全局修饰符允许正则表达式进行多次匹配。`+\n[\s\s]+?`+看起来已经足够好了。谢谢你一如既往的指导@提姆