如何在Javascript中使用Regexp在低于10的任何数字前面添加零
How to prepend a zero in front of any number below 10 in Javascript using Regexp
大家好,
是否有一个正则表达式,我可以用它在任何低于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
我想要一个RegExp,我可以应用到stringDate得到2011-10-17 10:03:07
非常感谢!
每次添加前导0,然后使用slice(-2)
获得最后两个字符,如下所示:
('0' + currentDate.getHours()).slice(-2)
下面的函数将允许您声明字符串中的数字的最小长度,并将其填充零以使其成为合适的长度。
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;
}
};
对于那些想要更简单的版本
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 || ' ');
}
};
例子:
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"
你不需要正则表达式。您可以自己创建一个简单的pad函数:
function pad(n) {
if (n < 10)
return "0" + n;
return n;
}
alert(pad(8));
alert(pad(11));
http://jsfiddle.net/DwnNG/我现在这是旧的,但我只是看到这个简单而干净的解决方案在w3c上使用,只是不得不分享它的地方。
var hours = currentDate.getHours();
(hours < 10 ? '0' : '') + hours;
如何:
x.replace(/^('d)$/, "0$1");
我更喜欢Alex的方式,但是如果你真的想要正则表达式的方式,你可以尝试:
"2011-10-10 10:2:27".replace(/:(?=[^0](?::|$))/g, ":0");
这应该可以完成工作(它有一个三元运算符,但也有一个正则表达式^^)
stringDate.replace(/'d+/g, function(m) {
return parseInt(m, 10) < 10 ? "0" + m : m;
});
您准备好使用您的单行解决方案了吗?
传入整个字符串…这将匹配个位数并填充0。
"2011-10-17 10:3:7"
.replace(/(^|[^0-9])([0-9])(?=($|[^0-9]))/ig, function ($0, $1) {
return $0[0] + '0' + $0[1];
});
//returns "2011-10-17 10:03:07"
% 0}{长度=> % 5 => 1 = 00001,2 = 00002,…55 = 00055,…
相关文章:
- Javascript引用任何数字
- javascript或css:如何隐藏后面跟着句点前缀的任何数字"1.文本”"2.文本“"
- jQuery函数中的Regex将匹配ID+任何数字
- RegExp:在任何数字之前插入位数
- 如何创建一个倒数计时器,用户在其中输入任何数字并将其从该数字显示为零
- 在Javascript的警告框中打印任何数字的乘法表
- 验证输入是否仅包含特殊字符而不包含任何数字
- 如果字符串不包含任何数字,如何将字符串转换为 0
- 为什么 NaN 大于 JavaScript 中的任何数字
- 使用Jquery从任何数字中删除零
- 根据出现的任何数字拆分字符串
- Javascript计算简单的乘法自动更改任何数字
- 如何在Javascript中使用Regexp在低于10的任何数字前面添加零
- 函数用于规范化0 - 1之间的任何数字
- 我需要让用户输入任何数字和字符,并且只输入'-'或者''在田地里.我该如何用正则表达式做
- 如何检查JavaScript中的字符串中是否存在任何数字或字母
- Javascript Regex 查找两个冒号之间的任何数字(大于 0)
- Javascript regex:替换任何数字附近的字母
- 正则表达式-匹配字符串中的任何数字
- 正则表达式检测仅用连字符分隔的任何数字