使用javascript

时间:2019-03-22 09:48:19

标签: javascript regex time

我正在使用此正则表达式来验证时间:

var time = document.getElementById("time").value;
var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(time);
if (isValid === false) {
    errors += '- ' + ' Invalid Time Input.\n';
}
if (errors)
    alert('The following error(s) occurred:\n' + errors);
document.MM_returnValue = (errors === '');

尽管这在大多数情况下都有效,但可以接受诸如9:50之类的输入。我需要强制用户以小于10的时间输入前导0,即有效时间应该是09:50,我在这里错过了什么?

2 个答案:

答案 0 :(得分:1)

有两件事情:

  • def opener(filename, label): # regular version with h5py.File(filename, 'r') as h_file: data = g_file[label][:] return data def fast_opener(filename, label): # multiple processes version with h5py.File(filename, 'r') as h_file: length = len(h_file[label]) pool = Pool() # multiprocessing.Pool and not multiprocessing.dummy.Pool args_iter = zip( range(0, length, 1000), repeat(filename), repeat(label), ) chunks = pool.starmap(_read_chunk_at, args_iter) pool.close() pool.join() return np.concatenate(chunks) def _read_chunk_at(index, filename, label): with h5py.File(filename, 'r') as h_file: data = h_file[label][index : index + 1000] return data 必须为2[0-4],因为没有2[0-3]的时间。
  • 似乎您只需要删除24:59中的?,因为[0-1]?量词表示 1或0次重复

请注意,由于您未使用子匹配项,因此此处不需要捕获组。最好将这些组替换为不捕获的组,或者由于冗余而删除。

使用

?

请参见regex demo

在您的代码段中:

/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/

答案 1 :(得分:0)

/^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/中,第一个?表示0-1可能会出现,也可能也不会,只要删除它,然后强制0或1出现