使用javascript和正则表达式将文本更改为内联文本
我用正则表达式使用javascript和正则表达式将文本更改为内联文本,javascript,regex,math,mathjax,Javascript,Regex,Math,Mathjax,我用正则表达式 /\$([^$]*)\$/g 用latex替换两个$内的文本 在javascript中,我使用 text.replace(/\$([^$]*)\$/g, function (str, match) { return changeToTeX(match); } 它几乎可以正常工作,但是,例如,本文 价格在400美元到500美元之间 因为它认为应该将400和转换为latex,因为此文本位于美元符号之间,所以会被搞砸 也许这是不可能修复的。我刚刚检查了math.stacke
/\$([^$]*)\$/g
用latex替换两个$内的文本
在javascript中,我使用
text.replace(/\$([^$]*)\$/g, function (str, match) {
return changeToTeX(match);
}
它几乎可以正常工作,但是,例如,本文
价格在400美元到500美元之间
因为它认为应该将400和
转换为latex,因为此文本位于美元符号之间,所以会被搞砸
也许这是不可能修复的。我刚刚检查了math.stackexchange.com,它支持用latex替换美元符号内的文本的相同行为,但在这里,美元符号之间的所有文本都被解释为latex时,同样的问题也会出现。如果在
$…$
内只有数字,请使用
/\$(\d+)\$/g
/\B\$\b([^$]*)\b\$\B/g
其中\d+
匹配一个或多个数字。内部的模式可以增强以匹配任何类型的数字(请参阅)
要匹配除$
和空白以外的任何内容,请使用
/\$([^\s$]*)\$/g
看
要仅在第一个$
之后和最后一个$
之前需要单词字符,请使用
/\$(\d+)\$/g
/\B\$\b([^$]*)\b\$\B/g
请参见@Tushar:只有当价格在400美元和500美元之间时,才需要匹配价格。。我知道这句话中不应该有匹配项。它似乎有效:)但是如果我写$2+2$时前面有空格,或者写$\frac{3}{4}$,它就不能工作了,那么规范是什么呢?你知道,正则表达式只能匹配正则文本。让我猜猜:在第一个
$
之后可以有任何内容,在后面的$
之前可以有任何内容,除了空格之外?中间没有$
?因为您已经用MathJax标记了它,请注意MathJax的tex2jax预处理器更复杂,并且还提供转义。