You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript提取MathQuill分数表达式中的数值?

用JavaScript正则提取MathQuill分数数值的解决方案

嘿,我来帮你搞定这个问题!之前用split方法处理确实不够健壮——万一表达式里有其他特殊字符或者更复杂的结构,很容易出错。用正则表达式来匹配\frac{分子}{分母}这种固定结构就靠谱多了,我给你一步步拆解实现:

核心思路

我们需要匹配所有\frac{X}{Y}格式的片段,然后分别捕获其中的分子X和分母Y。这里的正则要注意:

  • \\frac:匹配字符串里转义后的\frac(因为JavaScript里反斜杠需要双重转义)
  • (\d+):捕获连续的数字(分子和分母),括号是捕获组,方便我们提取对应的值
  • g:全局匹配标志,确保能找到字符串里所有的分数

实现代码

var str = "\\frac{12}{3}+\\frac{2}{3}";
// 定义正则表达式,匹配\frac{数字}{数字}的结构,捕获分子和分母
var fracRegex = /\\frac{(\d+)}{(\d+)}/g;
var results = [];
let currentMatch;

// 循环提取所有匹配的分数
while ((currentMatch = fracRegex.exec(str)) !== null) {
  // 把捕获到的分子、分母转成数字,存入结果数组
  results.push(parseInt(currentMatch[1]), parseInt(currentMatch[2]));
}

// 按需求赋值给变量
var fra1 = results[0]; // 12
var fra2 = results[1]; // 3
var fra3 = results[2]; // 2
var fra4 = results[3]; // 3

// 验证结果
console.log(fra1, fra2, fra3, fra4); // 输出:12 3 2 3

扩展说明

如果你的分数可能包含小数或者负数,可以把正则调整为:

var fracRegex = /\\frac{(-?\d+(?:\.\d+)?)}{(-?\d+(?:\.\d+)?)}/g;

这个版本支持匹配像\frac{-12.5}{3}或者\frac{2}{-4.2}这类情况,提取后用parseFloat替换parseInt即可。

内容的提问来源于stack exchange,提问作者Bharad Waj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:28:27