我允许用户输入转换为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