【问题标题】:JavaScript basis is a decimal number in math.pow functionJavaScript基础是math.pow函数中的十进制数
【发布时间】:2016-04-26 17:41:22
【问题描述】:

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

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

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

有人可以帮忙吗?

【问题讨论】:

    标签: javascript php regex math


    【解决方案1】:

    我发现您的正则表达式存在几个问题:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2017-08-01
      相关资源
      最近更新 更多