所有数字。这Perl脚本是我想在JavaScript实现的东西(source):JavaScript中,正则表达式,添加前导零包含在字符串
s/([0-9]+)/sprintf('%04d',$1)/ge;
显然的sprintf没有在JavaScript中使用,但我知道你可以建立一个函数直接工作的问题的数量,但在我的情况下,我有一个很长的字符串,可能包含多个数字字符串,如:abc8 23 123
到这个:abc000008 000023 000123
(使用6位数字作为例子)。
因此,它可能是我没有得到的一些聪明的正则表达式,或者以某种方式找到某种方式将长字符串拆分为不同的字符串和数字的数组,并且只对数字进行一次一个的操作。
我真的很想避免后一种方法,因为1)在这种情况下,速度是一个问题,2)在正确的位置分割字符串所涉及的正则表达式似乎比在此处添加前导零更困难。
最后,还有什么其他的方法可以用JavaScript的正则表达式去解决吗?
简短而亲切! Btw。 “m.length - 1”而不是“m.length”的任何原因? – Shaw 2012-03-22 00:11:48
@Shaw:'m.length - 1'是因为''00000''字符串没有额外的未使用的零,它只有需要的时间。由于'm'总是至少有一个字符长,所以你只需要五个零填充它,而当'm.length'为1时,'m.length - 1'给出0,这是字符串中的起始位置返回全部五个零。你可以使用'“000000”.substr(m.length)',即字符串的长度是你想要的位数,但是这个字符串的第一个字符只是虚拟填充,它从来没有被使用过。 – Guffa 2012-03-22 07:21:53