正则表达式与公式中的数字不匹配

时间:2017-01-13 11:55:47

标签: javascript arrays regex match exec

我需要匹配公式中的4 pattern,如此类型的

  1. _{num}
  2. _num
  3. ^{num}
  4. ^num
  5. 所以我创建了像这样的正则表达式模式

    /\_(\d+)|\^(\d{1})|\_\{(\d+)\}|\^\{(\d+)\}/g
    

    Regex demo

    这个正则表达式演示工作完美匹配,但适用于javascript代码无法正常工作

    var int_reg =/\_(\d+)|\^(\d{1})|\_\{(\d+)\}|\^\{(\d+)\}/g;
        var str = int_reg.exec('\int_5^{3}100x-100=10');
                            console.log(str)

    请告诉我这是什么问题?。并以我的目标更正我的代码

    感谢的

1 个答案:

答案 0 :(得分:1)

它工作正常,但你得到的数组是一个匹配操作的一系列捕获(例如()中匹配的东西)。要进一步匹配,您需要再次调用exec,如下所示:

var int_reg =/\_(\d+)|\^(\d{1})|\_\{(\d+)\}|\^\{(\d+)\}/g;
var str = '\int_5^{3}100x-100=10';
console.log(int_reg.exec(str))
console.log(int_reg.exec(str))
console.log(int_reg.exec(str))

修改以解决您的其他问题(即使问题已经结束):

var int_reg =/\_\d+|\^\d|\_\{\d+\}|\^\{\d+\}/g;
var str = '\int_5^{3}100x-100=10';
console.log(str.match(int_reg).map(s => Number((/\d+/.exec(s))[0])))