我的问题:在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+)?)'')#"