Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码围栏标记的正则表达式。简单吗?_Javascript_Regex - Fatal编程技术网

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]+?`+看起来已经足够好了。谢谢你一如既往的指导@提姆