const regex = /(?: # 采用非捕获括号进行分组(非必要不使用捕获型括号)
```[\s\S]*?``` # 采用非贪婪匹配(必须),匹配0到n次空白或非空白字符(任意字符)
) # 结束第一个分支
| # 或符号
(?: # 同上,采用非捕获型括号
~~~[\s\S]*?~~~ # 同上,非贪婪匹配来匹配0到n次空白或非空白字符
) # 结束第二个分支/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?: # 采用非捕获括号进行分组(非必要不使用捕获型括号)
```[\\s\\S]*?``` # 采用非贪婪匹配(必须),匹配0到n次空白或非空白字符(任意字符)
) # 结束第一个分支
| # 或符号
(?: # 同上,采用非捕获型括号
~~~[\\s\\S]*?~~~ # 同上,非贪婪匹配来匹配0到n次空白或非空白字符
) # 结束第二个分支', 'gm')
const str = `// 1. 匹配四个空格导出的代码块
functino(asfd)
safdsadf
safsadf
safdsdaf
// 2. 匹配三个反引号所引出的代码块
\`\`\`
func function(){
}
\`\`\`
这里是一些文本
……
………………
\`\`\` python
print("hello")
\`\`\`
// 3.如果四个空格之前的一行不是回车独占一行,则不会导出代码块(符合Markdown约定)
functino(asfd)
safdsadf
safsadf
safdsdaf
safd
// 4. 匹配三个波浪号导出的代码块
~~~
fmt.println(123)
~~~
// 5. 匹配前后四个及以上反引号导出的代码块
\`\`\`\`
aaa
\`\`\`
\`\`\`\`
这里是一些文本……
\`\`\`\`\`
print("this is a code block")
\`\`\`\`\`
// 6. 匹配前后四个及以上波浪号导出的代码块
~~~~
aaa
~~~
~~~~
这里是一些文本……
~~~~~~
print("this is a code block")
~~~~~~
`;
const subst = ``;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions