2011-11-30 36 views
2

我正在嘗試將代碼添加到showdown.js以進行代碼隔離,但是我仍然在正則表達式中使用noob。代碼擊劍,如果你不知道,是這樣的:在Markdown中用於代碼屏蔽的JavaScript正則表達式

```javascript 
alert('hello world'); 
``` 

然後它會創建這樣的:

<div class="highlight"> 
    <pre lang="javascript"> 
    alert('hello world'); 
    </pre> 
</div> 

如何去捕捉```(任何)\ n (什麼)```JavaScript風格的正則表達式?

回答

2
r = /`{3}(?:(.*$)\n)?([\s\S]*)`{3}/m; 
r.exec(yourSampleString); // => [..., "javascript", "alert('hello world');\n"] 
r.exec('```puts "ok"```'); // => [..., undefined, "puts \"ok\""] 
r.exec('```foo```bar```'); // => [..., undefined, "foo```bar"] 
+0

關閉,但如果您發現我的正則表達式需要捕獲'lang =「」'參數。因此:'[...,「javascript」,「alert('hello world')」]' –

+0

@OscarGodson:gotcha,爲語言標識添加了一個可選捕獲。 – maerics

+0

性感我告訴你!感謝芒:) –

1

這將讓

```

result = subject.match(/`{3}[\s\S]*?`{3}/g); 

之間一切的陣列但要注意的是嵌套:

```

會很麻煩..

+0

無論如何,只是忽略了所有'''之間的第一個和最後一個'''? –

+0

@OscarGodson你可以使量詞*?貪婪*。 – FailedDev

相關問題