用前面的零检查时间

时间:2012-11-23 07:33:00

标签: javascript jquery

我正在开发app。它有一个形式,其中一个领域是时间。用户将以24小时格式输入时间。当用户输入07:40之类的时间时,它可以正常工作,但是当他们输入7:00时却没有。所以我想要的是当输入7:00时我想在7之前添加0。 注意我已经将:从时间中移除并使其像700一样。现在我想添加前导零,如果用户之前没有输入任何内容,并且如果他们在开始时输入一个数字,则保持原样。我怎样才能在javascript中实现这一点?我知道我可以使用正则表达式,但任何样本都会有所帮助。

以下是我的表现,但似乎不正确,因为它不起作用。

var regex = /^\b(0(?!\b))+/g;

if (!regex.test(time)) {
    time = '0' + time;
}

4 个答案:

答案 0 :(得分:3)

最简单的方法是从已经前缀的字符串中剪切最后的 n 数字。如果你想确保你的字符串总是4位数,你可以这样做:

time = ('0' + time).slice(-4);

假设您知道time始终至少为三位数。当然,你当然可以写:

time = ('0000' + time).slice(-4);

但这可能在您的具体用例中没有多大意义。

此代码可以在没有任何事先检查的情况下执行,而不仅仅是在表达式匹配的情况下有条件地执行。

答案 1 :(得分:0)

你可以在删除冒号之前这样做:

time = time.replace(/^\d{1}:/, '0$&');

答案 2 :(得分:0)

这应该没问题:

var time = '7:50';
time = time.replace(/\b\d\b/g, '0$&');

在移除冒号之前。

答案 3 :(得分:0)

如果你对你的正则表达式非常具体,那就没有必要在前面添加0

了。
if( /^[0-9]:[0-9]{2}$/.test( time ) ) {
    time = "0" + time;
}