我的问题:在PHP函数代码中应准备好在JavaScript中导出。所以我有这一行:
<div ng-controller="customersCtrl4">
<p>selected item is : {{selectedItem}}</p>
<select ng-model="selectedItem.game">
<option ng-repeat="x in myGames" value="{{x.game.name}}">{{x.game.name}}</option>
</select>
</div>
<div ng-controller="customersCtrl" sytle="color:white">
<ul ng-repeat="x in myName | filter:selectedItem">
<li> <a ng-href="{{x.channel.url}}" target="_blank">{{x.channel.name}}</a>
</li>
</ul>
</div>
现在问题是$operationvalue_new2 = preg_replace_("#exp\((.*)\^(.*)\)#", "Math.pow($1, $2)", $operationvalue_new2);
的值可以是小数,所以我将不再正确计算。如果$1
为1.2,则仅以1计算。
有人可以帮忙吗?
答案 0 :(得分:1)
我在你的正则表达式中看到了几个问题:
双引号字符串可能会使反斜杠的转义效率降低,因为正则表达式需要自行转义:尝试使用双引号反斜杠:
"#exp\\((.*)\\^(.*)\\)#"
.*
尽可能匹配。但这包括exp(1,4);exp(2^4)
等案例。使用非贪婪的匹配或排除不需要的字符:
"#exp\\(([^\\^\\)]*)\\^([^\\^\\)]*)\\)#"
此外,即使使用该修复,匹配任意文本也存在风险,特别是如果生成的文本将成为生成的JavaScript代码的一部分。例如,考虑如果文本包含exp(</script>^5)
会发生什么。相反,如果这是意图,则仅匹配格式良好的数字:
"#exp\\((\\d+(?:\\.\\d+)?)\\^(\\d+(?:\\.\\d+)?)\\)#"