重复正则表达式匹配数学符号然后数字失败

Ril*_*n42 1 ruby regex

我试图匹配mathematica表达式1+21*2/3....无穷大.有人可以解释为什么我的正则表达式匹配下面的最后一个案例,以及如何修复它以便它只匹配有效的表达式(可能永远延伸)?

perms=["12+2*4","2+2","-2+","12+34-"]
perms.each do |line|
    puts "#{line}=#{eval(line)}" if line =~ /^\d+([+-\/*]\d+){1,}/
end
Run Code Online (Sandbox Code Playgroud)

我期望输出为:

12+2*4=20
2+2=4
Run Code Online (Sandbox Code Playgroud)

gle*_*man 6

在a里面[character set],-角色定义了一系列角色 - 想想[a-z][0-9].如果要匹配文字-,则必须是第一个或最后一个字符.

/^\d+(?:[+\/*-]\d+)+$/
Run Code Online (Sandbox Code Playgroud)

其他事情:{1,}确切地说+; 你也需要在最后锚定,所以你不匹配1+2+