将数学字符串转换为JavaScript表达式

将数学字符串转换为JavaScript表达式,javascript,regex,Javascript,Regex,我正在尝试使用JavaScript将字符串转换为有效的JavaScript表达式 例如: 4x+2y+1z应转换为4*x+2*y+1*z 12r+6s应转换为12*r+6*s 我曾尝试使用正则表达式来实现这一点,但未能成功实现 (\d+)(?=[a-z]) 尝试此操作。替换为$1*。请参阅演示 以下代码适用于您当前的输入 > '4x+2y+1z'.replace(/(\d)([a-z])/g, '$1*$2') '4*x+2*y+1*z' > '12r+6s'.replace(

我正在尝试使用JavaScript将字符串转换为有效的JavaScript表达式

例如:

  • 4x+2y+1z
    应转换为
    4*x+2*y+1*z
  • 12r+6s
    应转换为
    12*r+6*s
我曾尝试使用正则表达式来实现这一点,但未能成功实现

(\d+)(?=[a-z])
尝试此操作。替换为
$1*
。请参阅演示


以下代码适用于您当前的输入

> '4x+2y+1z'.replace(/(\d)([a-z])/g, '$1*$2')
'4*x+2*y+1*z'
> '12r+6s'.replace(/(\d)([a-z])/g, '$1*$2')
'12*r+6*s'

已编辑

请尝试以下代码:

function strToExpression(str)
{
    return str.replace(/(\d)+([A-Za-z])/g, '$1*$2');
}

var firstExpression = strToExpression('4x+2y+1z');
var secondExpression = strToExpression('12r+6s');

您未能成功完成此操作是有原因的:仅使用正则表达式无法完成此操作。@Qantas94Heavy您能为我推荐一些方法吗?因此,您正在将一个典型的数学字符串转换为一个有效的JavaScript字符串?这适用于您当前的输入<代码>'4x+2y+1z'。替换(/(\d)([a-z])/g,$1*$2')那么你需要担心像
2(3x)
这样的括号吗?为什么在这里使用lookahead?@AvinashRaj我不想要两个组并使用
$2
只有在无法通过捕获的情况下才使用lookahead。检查演示站点中两个正则表达式的性能@澳洲航空94Heavythe实际上不需要
$2
overkill@vks:这不是滥杀,它执行相同的功能。就我个人而言,除非有必要,否则我更喜欢简洁而不是性能,但这是对这么一小段代码的个人要求。这不是重点。请参阅调试器中的步骤。您的需要500多个步骤。Lookaehad需要12个步骤。这应该可以消除您的疑虑@Qantas94Heavy@AvinashRaj不知道你在看什么。这是两个正则表达式。试试看ddebugger@AvinashRaj无论输入是什么…您的都会检查每个数字并查看前面是否有字符。因此,这将需要更多步骤。将正则表达式更改为
\d+
,以使其更好