我需要替换网页中的 LaTex 指令。 LaTex 指令包含在两个“$”符号中,类似于 $a^2+b^2=1$(内联公式)或 $$a^2+b^2=1$$( block 公式,它将换行显示)。 现在的问题是我想使用 Javascript 将这些指令替换为一些图片(对应于这些指令),因为浏览器本身显然无法以 LaTex 样式显示这些公式。 (见图)a^2+b^2=1我如何使用正则表达式来做到这一点?我在下面展示了我的工作,但有一些问题。 对于内联公式,我使用:
var reg = /\$([^$]|(\\$))*\$(?=[^$])/mg
这意味着我想要一些文本以 $ 开头,然后是 'not $' 或 '\$' 或什么都不是,并以 '$' 结尾,但在结尾之后将不允许 $ 的上升。听起来不错.. 但对于像 $a^2\$b^2$ 这样的文本,我希望它能显示为(见图)a^2\$b^2 ,但事实是正则表达式只替换了它的一部分,如“*replaced*b^2$”。我需要一些帮助~~
最佳答案
下面的正则表达式
/(\${1,2})((?:\\.|.)*)\1/
将匹配包含在单元或双元中的 LaTex block 。请注意使用反向引用\1 来匹配开始标记。
如果 LaTex block 可以扩展 ovver 行边界则使用
/(\${1,2})((?:\\.|[\s\S])*)\1/
要在字符串中进行全局替换,请说 source
:
source.replace (/(\${1,2})((?:\\.|[\s\S])*)\1/g, function (m, tag, src) {
// m is the entire match
// tag is '$' or '$$'
// src is the internal text
var rslt = '';
// create what you want to appear in rslt.
return rslt;
}
关于javascript - 使用 Javascript 在网页中查找 LaTex 指令的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13080144/