2012-06-25 82 views
0

我已經聯合MathJax降價標記,因此我需要在所有$$<span>$$</span>替換,這樣降價不渲染$$ _^...從MathJax跡象。所有\[ \]必須替換爲<div>\[ \]</div>正則表達式替換對美元的跡象

我發現了類似的question,但它不完全是我所需要的。我需要這個

This is $some$ math \[equation\] which I $like$. 

轉換爲該

This is <span>$some$</span> math <div>\[equation\]</div> which I <span>$like$</span>. 

大概是什麼,我需要到僅僅是在正則表達式

text = text.replace(/\$.*?\$/g, "meow"); 

莫名其妙包括和$$標誌(或\[ \]),只是用$1嵌入文本<span>$$1$</span>並適應PHP。

回答

1

您需要分兩步做,因爲替換文本是不同的。

首先,更換$..$

$text = preg_replace('/\$.*?\$/', '<span>\0</span>', $text); 

然後,更換\[...\]

$text = preg_replace('/\\\\\[.*?\\\\\]/', '<div>\0</div>', $text); 
+0

第二個還緩存雙反斜線作爲替代,並從'試驗\\ Blah'我得到'測試

\\
Blah'。另外,我使用的是PHP的對等'/(\$.*?\$)/,「 $ 1」'和'/(\\\[.*?\\\])/,「
$1
」'。 – svenkapudija

+0

@svenkapudija:我沒跟着。你正在使用JavaScript中的對象,對吧?第二個不應該捕獲「\\」,因爲'\ ['是必須的。 –

+0

PHP實際上,我的錯,現在我添加標籤的問題。我刪除了javascript轉義符,並且它不標記雙反斜線,但也不標記'\ [\]'' - /(\[\*?\])/' – svenkapudija