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

标签 javascript regex printf

这个 Perl 脚本是我想用 JavaScript ( source ) 实现的:

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

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

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

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

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

最佳答案

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

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

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

关于JavaScript,正则表达式,将前导零添加到字符串中包含的所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812610/

相关文章:

javascript - 在多个表单中使用 GO back 时如何保留表单中单选按钮的值?

javascript - 如何传递和接收 $(this) 作为参数?

javascript - 匹配字符串中的所有 URL 并在 JavaScript 中返回数组

c - 为什么在 Windows 上打印这个宽字符串会崩溃?

c - 将括号 ("(") 放在 printf 代码中有什么问题

javascript - vanilla JavaScript 当函数完成时,做一些事情

javascript - 如何计算javascript中字符串中的空行

python - 使用 CR/LF 对使用正则表达式拒绝匹配

你能在 C 中同时使用 printf() 和 ncurses 函数吗?

javascript - 用于动态设置数据的 react-bootstrap 多行警报