首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在呈现不同结果的forEach中修复正则表达式

如何在呈现不同结果的forEach中修复正则表达式
EN

Stack Overflow用户
提问于 2019-09-27 20:36:47
回答 1查看 74关注 0票数 0

我有一个带有forEach的JavaScript文件,它有两个正则表达式,它们将根据if触发。我把哪个条件放在第一位并不重要。一个正则表达式replace具有json属性的当前值,另一个具有以前的迭代值。

我尝试过切换if语句。我已经删除了if,并一次尝试一个正则表达式。一个正则表达式似乎正在使用前面的循环,这并不重要

代码语言:javascript
复制
stats.forEach( (stat) => {
    if(display_detail) {

        lsm.displayString = lsm.displayString.replace(/(\d{1,4})\s([_a-zA-Z][^\0]*)\s(\()()(\))/g, lsm.count + " $2 $3$4" + lsm.detail_array.join(',') + "$5");

    } else {

        lsm.displayString = lsm.displayString.replace(/(\d{1,4})\s([_a-zA-Z][^\0]*)/g, lsm.detail_array.join(',') + " $2")

    }            
});

JSON元素

代码语言:javascript
复制
{ count: 2,
  displayString: '1 POne (9)',
  detail_array: [ 9, 14 ] }

在我期望详细信息( diplay_detail )的完整运行后,我期望它打印如下:2 POne (9,14)

我得到了1个POne (9)

但是如果我通过另一个正则表达式运行它,我会得到我期望得到的结果:

9,14 POne ()

我确信它会运行第一个循环,就像json中存储的displayString所显示的那样。displayString从以下位置开始

0 POne ()

EN

回答 1

Stack Overflow用户

发布于 2019-09-27 23:14:11

正则表达式在第二轮中有缺陷...我把问题复杂化了。我不需要检查细节,我只需要替换括号,因为我替换了括号中的整个字符串。这解决了它,也许不是那么优雅,但它是有效的。

代码语言:javascript
复制
    lsm.displayString = lsm.displayString.replace(/(\d{1,4})\s([_a-zA-Z][^\0]*)\s(\()[\(0-9,\)].*(\))/g, lsm.count + " $2 (" + lsm.detail_array.join(",") + ")");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58134710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档