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

时间:2016-10-17 09:46:06

标签: javascript regex math mathjax

我使用正则表达式

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

用乳胶替换两个$' s内的文字。

在javascript中,我使用

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

它的工作方式几乎应该如此,但是,例如,这篇文章

  

价格在400美元到500美元之间。

会搞砸,因为它认为它应该将400 and转换为乳胶,因为这个文本是在美元符号之间。

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

1 个答案:

答案 0 :(得分:1)

如果您的$...$内只有数字,请使用

/\$(\d+)\$/g

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

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

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

请参阅this regex demo

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

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

请参阅another regex demo