JavaScript,正则表达式,将前导零添加到字符串中包含的所有数字

Sha*_*haw 4 javascript regex printf

这个 Perl 脚本是我想在 JavaScript 中实现的(源代码):

s/([0-9]+)/sprintf('%04d',$1)/ge;
Run Code Online (Sandbox Code Playgroud)

显然sprintf在 JavaScript 中不可用,但我知道您可以构建一个直接处理关注数量的函数,但是在我的情况下,我有一个长字符串,其中可能包含多个数字,可以将这样的字符串转换为abc8 23 123:(abc000008 000023 000123使用以 6 位为例)。

所以它要么是我没有得到的一些聪明的正则表达式,要么以某种方式找到某种方法将长字符串分成不同的字符串和数字的数组,并且只对数字一个一个地进行操作。

我真的想避免后一种方法,因为 1) 在这种情况下速度是一个问题,并且 2) 在正确的位置拆分字符串所涉及的正则表达式似乎比在这一点上添加前导零更难。

最后,还有其他方法可以使用 JavaScript 的正则表达式吗?

Guf*_*ffa 7

您可以使用正则表达式来查找数字,并用函数中的值替换它们:

s = s.replace(/\d+/g, function(m){
  return "00000".substr(m.length - 1) + m;
});
Run Code Online (Sandbox Code Playgroud)

演示:http : //jsfiddle.net/Guffa/sEUHY/