正则表达式 - 从字符串中删除特定字符,但后面的第一个字符除外

时间:2014-04-10 08:34:34

标签: javascript regex

如何删除字符串中除逗号后的所有逗号:

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

输出:"123,45678900"

我尝试了这种方法:

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

但它无法正常工作。

3 个答案:

答案 0 :(得分:5)

这是一种方法,我看不到一个独特的正则表达式:

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

答案 1 :(得分:3)

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

解决
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中):您必须在第一个/(.+?),/之前和之后用\1替换任意多个/[0-9]+,/个实例。

答案 2 :(得分:0)

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

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