如何从多项式字符串中提取数字(包括+和 - 符号)

时间:2015-10-17 23:22:28

标签: javascript regex

我试图弄清楚如何提取,例如-13x^2+2-12x^4,作为多项式的负值,例如 /\(+)(-)\d{1,4}/g 。到目前为止,我已经成功地取得了权力。此外,我的解决方案达到了这个目的:

+

我知道它的语法错误,但我不确定如何表示符合以下数字的-x。 如果你能告诉我如何计算下一个-3就像常见/搜索短语的结尾一样,我会很高兴,我对这个术语不确定。你知道,如果它是-3x ^并且要点是提取/\ + or - \/d{1,4} x_here/g,那么它应该像for(i = 4; i >=1; --i){ ...

2 个答案:

答案 0 :(得分:3)

我想你想要:

Uncaught ReferenceError: gform is not defined(anonymous function) @ (index):64
Uncaught ReferenceError: gformCalculateTotalPrice is not defined(anonymous function) @ gravityforms-product-addons.js:5
Uncaught TypeError: r.yith_magnifier is not a function(anonymous function) @ autoptimize_d6e203920c4cf919b2b249da5c9d7391.js:97
Uncaught ReferenceError: gformCalculateTotalPrice is not defined(anonymous function) @ gravityforms-product-addons.js:5

答案 1 :(得分:3)

var formula = '-13x^2+2-12x^4';

formula.match(/[+-]?\d{1,4}/g); 

返回:

["-13", "2", "+2", "-12", "4"]

如果您希望将数字组织成系数和权力,这是一种有效的方法:

var formula = '-13x^2+2-12x^4';

function processMatch(matched){
    var arr = [];
    matched.forEach(function(match){
        var vals = match.split('^');
        arr.push({
            coeff: parseInt(vals[0]),
            power: vals[1] != null ? parseInt(vals[1]) : 0
        })
    })
    console.log(arr);
}

processMatch(formula.match(/[+-]?\d+x\^\d+|[+-\s]\d[+-\s]/g))

/* console output:
var arr = [
    { coeff: -13, power: 2 },
    { coeff: 2, power: 0 },
    { coeff: -12, power: 4 }        
];*/