【发布时间】:2014-04-10 08:34:33
【问题描述】:
如何从字符串中删除除数字后的第一个逗号之外的所有逗号:
输入:",123,,,456,789,,,00,"
输出:"123,45678900"
我尝试了这种方法:
str.replace(/(.*,.*)(,)(.*)/g ,"$1$3");
但它不能正常工作。
【问题讨论】:
标签: javascript regex
如何从字符串中删除除数字后的第一个逗号之外的所有逗号:
输入:",123,,,456,789,,,00,"
输出:"123,45678900"
我尝试了这种方法:
str.replace(/(.*,.*)(,)(.*)/g ,"$1$3");
但它不能正常工作。
【问题讨论】:
标签: javascript regex
这是一条路,我看不到一个独特的正则表达式可以完成这项工作:
str.replace(/,?(\d+),/, "$1;").replace(/,/g, '').replace(/;/, ",");
【讨论】:
您想解决您的问题还是您感兴趣的正则表达式?您的问题可以使用
解决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 替换任意多个 /(.+?),/ 实例。
【讨论】:
有点丑陋的方法,但应该可以正常工作:
',123,,,456,789,,,00,'.match(/\d+/g).reduce(function(a, b, i) {
return a + (i === 1 ? ',' : '') + b;
}); // "123,45678900"
【讨论】: