我正在使用此正则表达式来验证时间:
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
,我在这里错过了什么?
答案 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出现