0

我正在开发应用程序。它有一个表格,其中一个字段是时间。用户将以 24 小时格式输入时间。当用户输入时间时07:40,它可以正常工作,但是当他们输入时,7:00它不会。所以我想要的是什么时候7:00输入然后我想在之前添加 0 7请注意,我已经:从 time 中删除并使其像700. 现在我想添加前导零,如果用户在它之前没有输入任何内容,并且如果他们在开始时输入一个数字,那么保持原样。我怎样才能在javascript中实现这一点?我知道我可以使用正则表达式,但任何示例都会有所帮助。

这是我的工作方式,但似乎不正确,因为它不起作用。

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

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

4 回答 4

3

最简单的方法是从已经加前缀的字符串中切出最后n位数字。如果您想确保您的字符串始终为 4 位数字,您可以执行以下操作:

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

假设你知道那time总是至少三位数。可以肯定的是,你当然可以写:

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

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

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

于 2012-11-23T07:36:10.950 回答
0

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

time = time.replace(/^\d{1}:/, '0$&');
于 2012-11-23T07:36:53.453 回答
0

这应该做得很好:

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

在删除冒号之前。

于 2012-11-23T07:41:44.893 回答
0

如果您对正则表达式非常具体,则无需在前面加上 0

if( /^[0-9]:[0-9]{2}$/.test( time ) ) {
    time = "0" + time;
}
于 2012-11-23T07:45:24.160 回答