用正则替换实现自定义函数

2019-04-11  本文已影响0人  Dakini_Wind

emmm,一个非常偷懒的自定义函数方式,估计没人这样做过。
话不多说,先贴代码为敬。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>函数替换规则demo</title>
</head>
<body>

<p>定义函数:avg(i,j)为:(i+j)/2</p>
    <p>用户调用函数:avg(a,b)</p>
<button onclick="myFunction()">替换</button>
<p id="demo">avg(a,b)</p>
<script>
function myFunction() {
    //函数定义
    var str = "avg(i,j)";
    var def = "(i+j)/2";
    
    //正则规则
    var defname = str.match(/[A-z]+/);
    var pams = str.match(/\(([^)]*)\)/);
    var pam = pams[1].match(/[A-z]+/g);

    //var rule[defname] = def;
    //这里应该对函数名及对应定义进行存储...但是我不会
    
    //调用函数
    var inputstr = "avg(a,b)";
    
    //正则规则
    var inputpams = inputstr.match(/\(([^)]*)\)/);
    var inputpam = inputpams[1].match(/[A-z]+/g);
    
    var result = def;
    for (var i = 0; i<pam.length; i++)
    {
        var tmp = result;
        var result = tmp.replace(new RegExp(pam[i],'g'),inputpam[i]);
    }
    
    document.getElementById("demo").innerHTML =
        "函数名:" + defname
        + "<br>参数个数:" + pam.length
        + "<br>形参:" + pam
        + "<br>使用替换规则:" + result;
    
}
</script>

</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读