사용자가 MathJax로 변환하는 BBCode를 입력 할 수 있도록 허용하고 있습니다. 그러나 아래에서 볼 수 있듯이 문제가 있습니다.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
어떻게 추가 \(
및 \)
피할 수 있습니다 때 BBCode, bbcode 안의 제곱근 명령과 같은 BBCodes를 중첩합니다. ?
감사합니다.
죄송합니다. 어떤 링크가 더 적절하게 설명되어 있어야할까요? 첫 번째는 일반적인 문제 (특히 정규 표현식이 중첩 된 표현식을 파싱하는 데 부적절한 이유)에 대해 매우 앞섰던 stackoverflow 주제를 가리키고 두 번째 링크는이 특정 문제를 해결할 수있는 라이브러리를 가리키고 있습니다. – caseygrun