Javascript 如何编写在字符串中的函数中添加函数的函数?

Javascript 如何编写在字符串中的函数中添加函数的函数?,javascript,regex,string,function,Javascript,Regex,String,Function,我将尽力解释这个字符串操作 我想编写一个JavaScript函数,它接受一个字符串(最好是来自消息文本框,但在本例中它最初存储在一个变量中),并查找幂函数“Pow()”的每个实例。然后,取幂函数“Pow(base,exponent)”的“base”部分的内容,并将其替换为绝对函数“Abs()”,其内容在其中,因此结果为“Pow(Abs(base,exponent)”。基地可以是任何东西;一个词、一个等式或另一个函数。结果输出到另一个消息文本框 比如说 输入: return(1.0步(snoise

我将尽力解释这个字符串操作

我想编写一个JavaScript函数,它接受一个字符串(最好是来自消息文本框,但在本例中它最初存储在一个变量中),并查找幂函数“Pow()”的每个实例。然后,取幂函数“Pow(base,exponent)”的“base”部分的内容,并将其替换为绝对函数“Abs()”,其内容在其中,因此结果为“Pow(Abs(base,exponent)”。基地可以是任何东西;一个词、一个等式或另一个函数。结果输出到另一个消息文本框

比如说

输入:
return(1.0步(snoise(vec2(5.0*pow(iGlobalTime,2.0)+pow(uv.x*7.0,1.2))、pow((mod(iGlobalTime,100.0)+100.0)*uv.y*0.3+3.0,staticHeight))、staticAmount()*静强度

输出:
return(1.0步(snoise(vec2(5.0*pow(abs(iGlobalTime),2.0)+pow(abs(uv.x*7.0),1.2),pow(abs(mod(iGlobalTime,100.0)+100.0)*uv y*0.3+3.0,staticHeight)),staticAmount*静态强度

我很了解.match和string.replace()函数,但这有点复杂。 谁能把我引向正确的方向

<textarea id = "output" rows="25" cols="55" ></textarea>

<script>

inputStr = "return(1.0-step(snoise(vec2(5.0*pow
            (iGlobalTime,2.0)+pow(uv.x*7.0,1.2),pow
            ((mod(iGlobalTime,100.0)+100.0)*uv.y*0.3+3.0,
            staticHeight))),staticAmount))*staticStrength;"

function baseReplacer(input)
{

}

var outputStr = baseReplacer(inputStr);
document.getElementById("output").value = outputStr;

</script>

inputStr=“返回(1.0-step(snoise)(vec2)(5.0*pow
(iGlobalTime,2.0)+功率(uv.x*7.0,1.2),功率
((mod(iGlobalTime,100.0)+100.0)*uv.y*0.3+3.0,
静态高度))),静态量()*静态强度;”
函数baseReplacer(输入)
{
}
var outputStr=baseReplacer(inputStr);
document.getElementById(“output”).value=outputStr;

我将尝试描述伪算法:

对于子字符串
pow(
)的每个匹配: 从下一个位置,您可以在第一个参数或一个简单参数中找到嵌套的括号,然后是逗号。 如果找到方括号,则遍历每个位置,每个打开方括号向计数器添加+1,每个关闭方括号向计数器添加-1。当计数器设置为零时,下一个逗号一定会结束第一个参数字符串

明白了吗


Happy 2020;)

这不是正则表达式的真正工作,因为有递归/嵌套括号:只是一个想法。。。一个选项是将所有的
pow(
替换为
powAbs(
),然后只编写一个名为
powAbs()
的包装函数,将
abs()
应用于基参数。