使用 javascript 和正则表达式将文本更改为内联 TeX

Change text to inline TeX with javascript and regex

我使用正则表达式

/$([^$]*)$/g

用 Latex 替换两个 $ 中的文本。

在javascript中,我使用

text.replace(/$([^$]*)$/g, function (str, match) {
    return changeToTeX(match);
}

它几乎可以正常工作,但是,例如,这篇文章

The price is between 0 and 0.

会搞砸,因为它认为应该将 400 and 转换为乳胶,因为此文本位于美元符号之间。

可能无法修复。我刚刚检查了 math.stackexchange.com,它支持相同的行为,美元符号内的文本被乳胶替换,但这里出现了同样的问题,美元符号之间的所有文本都被解释为乳胶。

如果 $...$ 中只有数字,请使用

/$(\d+)$/g

其中 \d+ 匹配一位或多位数字。可以增强内部模式以匹配任何类型的数字(参见 Matching Floating Point Numbers with a Regular Expression)。

要匹配除 $ 和空格之外的任何内容,请使用

/$([^\s$]*)$/g

this regex demo

可能,只需要第一个 $ 之后和最后一个 $ 之前的单词字符,使用

/\B$\b([^$]*)\b$\B/g

another regex demo