【问题标题】:Regex - remove a specific character from a string except the first after number正则表达式 - 从字符串中删除特定字符,但数字后的第一个字符除外
【发布时间】:2014-04-10 08:34:33
【问题描述】:

如何从字符串中删除除数字后的第一个逗号之外的所有逗号:

输入:",123,,,456,789,,,00,"

输出:"123,45678900"

我尝试了这种方法:

str.replace(/(.*,.*)(,)(.*)/g ,"$1$3");

但它不能正常工作。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    这是一条路,我看不到一个独特的正则表达式可以完成这项工作:

    str.replace(/,?(\d+),/, "$1;").replace(/,/g, '').replace(/;/, ",");
    

    【讨论】:

    • 发帖前应该先试一下。
    【解决方案2】:

    您想解决您的问题还是您感兴趣的正则表达式?您的问题可以使用

    解决
    var tmp = input.split(",");
    for(var i=0; i<tmp.length; i++) {
        if(tmp[i].match(/[0-9\.]+/)) {
            tmp[i] += ",";
            break;
        }
    }
    var output = tmp.join("");
    

    这里只使用一个正则表达式相当复杂,我相信(但还没有完全考虑清楚)如果没有递归模式(Javascript 不支持)就无法完成:您必须在第一个 /[0-9]+,/ 之前和之后用 \1 替换任意多个 /(.+?),/ 实例。

    【讨论】:

      【解决方案3】:

      有点丑陋的方法,但应该可以正常工作:

      ',123,,,456,789,,,00,'.match(/\d+/g).reduce(function(a, b, i) {
          return a + (i === 1 ? ',' : '') + b;
      });  // "123,45678900"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        相关资源
        最近更新 更多