使用 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
可能,只需要第一个 $
之后和最后一个 $
之前的单词字符,使用
/\B$\b([^$]*)\b$\B/g
我使用正则表达式
/$([^$]*)$/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
可能,只需要第一个 $
之后和最后一个 $
之前的单词字符,使用
/\B$\b([^$]*)\b$\B/g