JavaScript basis 是 math.pow 函数中的十进制数


JavaScript basis is a decimal number in math.pow function

我的问题:在PHP函数中,应该准备在JavaScript中导出代码。所以我有这一行:

$operationvalue_new2 = preg_replace_("#exp'((.*)'^(.*)')#", "Math.pow($1, $2)", $operationvalue_new2);

问题是现在$1的值可以是小数,所以我不会再正确计算了。如果$1是 1.2,则它只用 1 计算。

有人可以帮忙吗?

我看到您的正则表达式有几个问题:

  • 双引号字符串可能会降低使用反斜杠转义字符串的效率,因为正则表达式本身需要转义: 尝试使用双引号反斜杠:

    "#exp''((.*)''^(.*)'')#"
    
  • .*尽可能匹配。但这包括诸如 exp(1,4);exp(2^4) .使用非贪婪匹配或排除不需要的字符:

    "#exp''(([^''^'')]*)''^([^''^'')]*)'')#"        
    
  • 此外,匹配任何任意文本(即使具有该修复程序)也是有风险的,特别是如果生成的文本将是生成的 JavaScript 代码的一部分。例如,考虑如果文本包含exp(</script>^5)会发生什么。相反,如果这是意图,请仅匹配格式正确的数字:

    "#exp''((''d+(?:''.''d+)?)''^(''d+(?:''.''d+)?)'')#"