如何使用Regexp在Javascript中将任意数字前面的零前置零

Cyb*_*rix 21 javascript regex date

美好的一天,

有没有一个正则表达式,我可以用来在任何低于10的数字前加0?

我不是在寻找日期解析库,三元或if/else解决方案.(希望)

var currentDate = new Date(),
    stringDate = currentDate.getFullYear() + "-" + currentDate.getMonth() + "-" + currentDate.getDate() + " " + currentDate.getHours() + ":" + currentDate.getMinutes() + ":" + currentDate.getSeconds();

    alert( stringDate ); //2011-10-17 10:3:7
Run Code Online (Sandbox Code Playgroud)

我想要一个可以应用于stringDate的RegExp来获得2011-10-17 10:03:07

非常感谢你!

Ale*_*tie 73

只需每次添加前导0,然后使用slice(-2)以获取最后两个字符,如下所示:

('0' + currentDate.getHours()).slice(-2)
Run Code Online (Sandbox Code Playgroud)


Dav*_*aki 5

以下函数将允许您在字符串中或字符串内声明数字的最小长度,并使用零填充它以使其成为适当的长度.

var PrependZeros = function (str, len, seperator) {
    if(typeof str === 'number' || Number(str)){
        str = str.toString();
        return (len - str.length > 0) ? new Array(len + 1 - str.length).join('0') + str: str;
    }
    else{
        for(var i = 0,spl = str.split(seperator || ' '); i < spl.length; spl[i] = (Number(spl[i])&& spl[i].length < len)?PrependZeros(spl[i],len):spl[i],str = (i == spl.length -1)?spl.join(seperator || ' '):str,i++);
        return str;
    }
};
Run Code Online (Sandbox Code Playgroud)

对于那些想要一个不那么神秘版本的人

var PrependZeros = function (str, len, seperator) {
    if (typeof str === 'number' || Number(str)) {
        str = str.toString();
        return (len - str.length > 0) ? new Array(len + 1 - str.length).join('0') + str : str;
    }
    else {
        var spl = str.split(seperator || ' ')
        for (var i = 0 ; i < spl.length; i++) {
            if (Number(spl[i]) && spl[i].length < len) {
                spl[i] = PrependZeros(spl[i], len)
            }
        }
        return spl.join(seperator || ' ');
    }
};
Run Code Online (Sandbox Code Playgroud)

例子:

PrependZeros("1:2:3",2,":"); // "01:02:03"
PrependZeros(1,2); // "01"
PrependZeros(123,2); // "123"
PrependZeros("1 2 3",3); // "001 002 003" 
PrependZeros("5-10-2012",2,"-"); //"05-10-2012"
Run Code Online (Sandbox Code Playgroud)