使用javascript和regex将文本更改为内联TeX

Change text to inline TeX with javascript and regex

本文关键字:TeX 文本 javascript regex 使用      更新时间:2023-09-26

我使用正则表达式

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

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

在javascript中,我使用

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

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

价格在400到500美元之间。

会弄乱,因为它认为应该将400 and转换为latex,因为该文本位于美元符号之间。

也许这是不可能修复的。我刚刚检查了math.stackexchange.com,它支持相同的行为,美元符号内的文本被latex替换,但这里同样的问题发生在美元符号之间的所有文本被解释为latex。

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

/'$('d+)'$/g

,其中'd+匹配1个或多个数字。内部的模式可以增强以匹配任何类型的数字(参见用正则表达式匹配浮点数)。

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

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

查看这个正则表达式演示

如果只需要在第一个$之后和最后一个$之前的字字符,可以使用

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

查看另一个regex演示