正则表达式优化

wang_jinhai 2020-12-28 03:59:26
增加适应这种公式:=e8+(d10+......-d25)
其中 d10+......-d25 表示
d10-d11+d12-d13+d14-d15+d16-d17+d18-d19+d20-d21+d22-d23+d24-d25

大神,麻烦帮忙修改一下,无限感谢!

要求:
a1+.....+a4,代表连续相加:a1+a2+a3+a4
c1+...-c4如上面案案例,间隔加减:c1-c2+c3-c4






<table id="tab">
<tr>
<td id="a1">70</td>
<td id="a2">-60</td>
<td id="a3"></td>
<td id="a4">10</td>
<td id="a5">=a1-a2-b5</td>
</tr>
<tr>
<td id="b1">10</td>
<td id="b2">20</td>
<td id="b3">60</td>
<td id="b4">40</td>
<td id="b5">=a1+(b1+....-b4)</td>
</tr>
<tr>
<td id="c1">20</td>
<td id="c2">30</td>
<td id="c3">60</td>
<td id="c4">=a1+.....+a4</td>
<td id="c5">=c1+...-c4</td>
</tr>
</table>
<script type="text/javascript">
function calc(obj) {
var str = obj.innerText;
if (/^\s*$/.test(str))
return 0;
if (str[0]=="=") {
obj.innerText = eval(str.slice(1).replace(/([a-z]+)(\d+)([\+\-\*\/])\.{3,}([\+\-\*\/])([a-z]+)(\d+)/ig,function (s,w1,n1,c1,c2,w2,n2) {
var arr = [];
n1 = parseInt(n1, 10);
n2 = parseInt(n2, 10);
for (var i = n1; i < n2; i++)
arr.push(w1+i);
return arr.join(c1)+c2+w2+n2;
}).replace(/[a-z]+\d+/ig,function (s) {
return "("+calc(document.getElementById(s))+")";
}));
}
return obj.innerText;
}

var td = document.querySelectorAll("#tab td");
for (var i = 0, len = td.length; i < len; i++) {
calc(td[i]);
}
</script>
...全文
2147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
v18664661368 2020-12-29
  • 打赏
  • 举报
回复
天际的海浪 2020-12-28
  • 打赏
  • 举报
回复

<table id="tab">
    <tr>
        <td id="a1">70</td>
        <td id="a2">-60</td>
        <td id="a3"></td>
        <td id="a4">10</td>
        <td id="a5">=a1-a2-b5</td>
    </tr>
    <tr>
        <td id="b1">10</td>
        <td id="b2">20</td>
        <td id="b3">60</td>
        <td id="b4">40</td>
        <td id="b5">=a1+(b1+....-b4)</td>
    </tr>
    <tr>
        <td id="c1">20</td>
        <td id="c2">30</td>
        <td id="c3">60</td>
        <td id="c4">=a1+.....+a4</td>
        <td id="c5">=c1+...-c4</td>
    </tr>
</table>
<script type="text/javascript">
function calc(obj) {
    var str = obj.innerText;
    if (/^\s*$/.test(str))
        return 0;
    if (str[0]=="=") {
        obj.innerText = eval(str.slice(1).replace(/([a-z]+)(\d+)([\+\-\*\/])\.{3,}([\+\-\*\/])([a-z]+)(\d+)/ig,function (s,w1,n1,c1,c2,w2,n2) {
            n1 = parseInt(n1, 10);
            n2 = parseInt(n2, 10);
            var str = w1 + n1;
            for (var i = n1+1; i <= n2; i++)
                str += ((n2-i)%2==0?c2:c1) + w1 + i;
            return str;
        }).replace(/[a-z]+\d+/ig,function (s) {
            return "("+calc(document.getElementById(s))+")";
        }));
    }
    return obj.innerText;
}
 
var td = document.querySelectorAll("#tab td");
for (var i = 0, len = td.length; i < len; i++) {
    calc(td[i]);
}
</script>

87,987

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧