我允許用戶輸入轉換爲MathJax的BBCodes;但是,有一個問題,如下所示。JavaScript ReGeX:替換兩個字符串之間的匹配字符串
function chatFormat(text){
text = text.replace('\\', '');
text = text.replace(/\[f\](.+?)\/(.+?)\[\/f\]/igm, '\\(\\frac{\\text{$1}}{\\text{$2}} \\)');
text = text.replace(/\[eq\](.+?)\[\/eq\]/igm, '\\($1 \\)');
text = text.replace(/(.+?)\^(.+?)/igm, '\\($1^{\\text{$2}} \\)');
text = text.replace(/\[sqrt\](.+?)\[\/sqrt\]/igm, '\\(\\sqrt{\\text{$1}} \\)');
return text;
}
工作得很好。它將BBCode完美轉換爲適當的命令;但是,如果您開始嵌套命令,則存在問題。例如:
如果用戶類型:
[eq]15^2 = [sqrt]225[/sqrt][/eq]
將轉換爲:
\(15^{2} = \(\sqrt{225} \) \)
^ ^
| |
| |
| |
HOW TO AVOID
我怎樣才能避免額外\(
和\)
當他們嵌套BBCodes,就像[eq]
bbcode中的平方根命令一樣?
謝謝!
對不起,您覺得哪個鏈接需要在答案中更好地解釋?第一點是關於這個普遍問題的一個高度優先的stackoverflow主題(爲什麼正則表達式不適合解析嵌套表達式),而第二個鏈接指向一個可以解決這個特定問題的庫。 – caseygrun 2014-10-01 05:02:44