javascript - 使用 Javascript 在网页中查找 LaTex 指令的正则表达式

标签 javascript regex latex mathjax

我需要替换网页中的 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/

相关文章:

javascript - 将内容添加到新的空 iframe

javascript - 是否有在字符串中创建转义字符的模式?

emacs latex Hook 未运行

latex - 在 LaTeX 中,有没有办法在第一次引用它之后自动放置一个 float ?

javascript - 正则表达式以匹配由空格分隔的多个子网

latex - 使用 xltabular 为某些列指定相同的宽度

javascript - 根据屏幕尺寸使用 jQuery 动态包裹 div

javascript - 将变量从子函数传递到父函数javascript的更好方法

javascript - 在 Javascript 中对范围内的每个元素求和

c# - 正则表达式删除由空格分隔的连续 1-2 个字符集