我使用正则表达式
/\$([^$]*)\$/g
用乳胶替换两个$' s内的文字。
在javascript中,我使用
text.replace(/\$([^$]*)\$/g, function (str, match) {
return changeToTeX(match);
}
它的工作方式几乎应该如此,但是,例如,这篇文章
价格在400美元到500美元之间。
会搞砸,因为它认为它应该将400 and
转换为乳胶,因为这个文本是在美元符号之间。
也许无法修复。我刚刚检查了math.stackexchange.com,它支持相同的行为,其中美元符号内的文本被乳胶替换,但是同样的问题是美元符号之间的所有文本都被解释为乳胶。
答案 0 :(得分:1)
如果您的$...$
内只有数字,请使用
/\$(\d+)\$/g
其中\d+
匹配1位或更多位数。可以增强内部模式以匹配任何类型的数字(请参阅Matching Floating Point Numbers with a Regular Expression)。
要匹配除$
和空格以外的任何内容,请使用
/\$([^\s$]*)\$/g
可能只需在第一个$
之后和最后一个$
之前需要字词字符,请使用
/\B\$\b([^$]*)\b\$\B/g