用于分割基数和指数的正则表达式

时间:2014-07-17 13:41:16

标签: javascript regex string

我试图找出一种从指数中分离基数的方法。

例如,

  

3 ^ 2 ---> (3,2)

     

A ^ 3 ---> (A,3)

     

A ^ B ---> (A,B)

     

A ^(B + 3)---> (A,B + 3)

我目前的假设如下:

Base和exponent由' ^'旁边的括号之间的表达式定义。 (插入符号),或最近操作符之后/之前的字符。

有些事情(原谅伪代码的可怕借口)

// base:  
if (parenthesis before caret) {base = characters between parenthesis}  
else {base = characters after previous ('+' || '-' || '/')}

// exponent:  
if (parenthesis after caret) {exponent = characters between parenthesis} 
else {exponent = characters before following ('+' || '-' || '/')}

非常感谢

3 个答案:

答案 0 :(得分:0)

您可以简单地使用功能拆分。所以:

var calculation = "4^3";
var splitted = calculation.split("^");
var base = splitted[0];
var exp = splitted[1];

如果我弄错了,请告诉我:)

答案 1 :(得分:0)

像这样的正则表达式会有用吗?

var base = string.replace(/\^.*$/, '');
var exp = string.replace(/^.*\^/, '');

\^.*$插入符号右侧的所有内容 ^.*\^插入符号左侧的所有内容 见https://eval.in/171423

答案 2 :(得分:0)

要分割基数和指数,您需要的是RegEx

\s{0,}\^[\s]{0,}\({0,}

Check-Demo

var expStr = 'A^(B+25)';
var res = expStr.split(/\s{0,}\^[\s]{0,}\({0,}/).join(",").split(")").join("")
var converted = "(" + res + ")"
console.log(converted)
//(A,B+25)

//input - '3 ^ 2'
//output - (3,2)

//input - A ^ B
//output - (A,B)