匹配文本以突出显示js格式

时间:2018-04-28 23:09:17

标签: javascript regex

我正在尝试匹配一些消息字符串,以用作带有高亮显示js的格式化“代码块”。这是我现在使用的代码:

var regex = /\`\`\`([^*]+)\n([^*]+)\`\`\`/g;
msg = msg.replace(regex, `<pre><code class="scrollbarGhost-2F9Zj2 scrollbar-3dvm_9 hljs $1" style="position: relative;">$2</code></pre>`);

这是msg文本的一些示例:

```js
function smth(){
    return "hi"
}```


```cs
Console.WriteLine("etc");
```


```php
function smth($s){
    return $s;
}```

我正在尝试将js部分放入插槽中,价格为1美元,然后将剩下的文本放入插槽2美元。现在,它的推动作为js function smth(){ return "hi"

在插槽$ 1中,}在插槽$ 2中。
如何修复此问题并仅检测$ 1的js?

3 个答案:

答案 0 :(得分:0)

我从更新的描述中得到了什么,您正在寻找像这样的正则表达式:

\`\`\`(\w+)\n((?:(?!\`\`\`)[\s\S])*)\`\`\`

Demo

根据需要返回输出。

答案 1 :(得分:-1)

正则表达式:

\`\`\`(.*)\n([^}]*})\`\`\`

Demo

答案 2 :(得分:-1)

在答案中更新后,您必须使用否定前瞻和非捕获组。它适用于所有更新的示例。

\`\`\`(.*)\n((?:(?!\`\`\`)(.|[\r\n]))+)\`\`\`

enter image description here