Javascript - 删除在另一个char之前的所有char'0'

时间:2015-09-08 07:39:57

标签: javascript

我有很多这样的字符串:

0001, 0002, ..., 0010, 0011, ..., 0100, 0101,...

我希望这些变成这样:

1, 2, ..., 10, 11, ..., 100, 101, ...

所以我希望在存在不同的char之前删除所有0个字符。 我试过

.replace(/0/g, '') 

但当然它之后也删除了0个字符。因此,例如0010变为1而不是10。你能帮我吗?

4 个答案:

答案 0 :(得分:3)

你可以做到

.replace(/\d+/g, function(v){ return +v })

答案 1 :(得分:2)

这是短路解决方案

"0001".replace(/^0+/,""); // => 1 
...
// Tested on Win7 Chrome 44+

^ ...开始使用String 0+ ...至少有一个0

P.s。:在页面上测试正则表达式:https://regex101.com/https://www.debuggex.com

更新1:

对于一个长字符串

 "0001, 0002, 0010, 0011, 0100, 0101".replace(/(^|\s)0+/g,"") // => 1, 2, 10, 11, 100, 101
 // Tested on Win7 Chrome 44+

<强>示例:

//  short Strings
var values = ['0001', '0002','0010', '0011','0100','0101'];
for(var idx in values){
  document.write(values[idx] + " -> "+values[idx].replace(/^0+/,"") + "<br/>");
}

// one long String 
document.write("0001, 0002, 0010, 0011, 0100, 0101".replace(/(^|\s)0+/g,""));

答案 2 :(得分:1)

将正则表达式用作/(^|,\s*)0+/g,它将在开始时选择0,或者后跟,和空格

document.write('0001, 0002, ..., 0010, 0011, ..., 0100, 0101,...'.replace(/(^|,\s*)0+/g,'$1'))

说明:

(^|,\s*)0+

Regular expression visualization

Debuggex Demo

答案 3 :(得分:1)

之前已回答here

.replace(/^0+(?!$)/, '')

在功能上与winner_joiner的答案相同,但是如果输入完全由零组成,则此特定正则表达式不会返回完全空字符串。