您好我想自动填充以匹配此格式"HH:MM"
。
我想只检查这个正则表达式/^(0[1-9]|1[012]):[0-5][0-9]$/
,但不知道如何匹配正则表达式子字符串。我查看了维基百科和一些网站,找不到修改器来检查'subregex'。这个选项不存在吗?我终于用下面的代码解决了这个问题,但是这个数组当然可以通过编程方式生成,所以应该已经有了我正在寻找的解决方案。或者它不存在我应该写它?
patterns = [ /./, /^[0-9]$/, /^(0?[1-9]|1[012])$/, /^(0[1-9]|1[012]):$/, /^(0[1-9]|1[012]):[0-5]$/, /^(0[1-9]|1[012]):[0-5][0-9]$/]
unless patterns[newTime.length].test(newTime)
newTime = newTime.substring(0, newTime.length - 1)
答案 0 :(得分:0)
你可能会更有效地完成同样的事情
将正则表达式组合成级联可选形式,然后使用匹配长度substring
和一个自动完成时间的模板。
伪代码(不太了解JS)和真正的正则表达式。
# pseudo-code:
# -------------------------
# input = ....;
# template = '00:00';
# rx = ^(?:0(?:[0-9](?::(?:[0-5](?:[0-9])?)?)?)?|1(?:[0-2](?::(?:[0-5](?:[0-9])?)?)?)?)$
# match = regex( input, rx );
# input = input + substr( template, match.length(), -1 );
^
(?:
0
(?:
[0-9]
(?:
:
(?:
[0-5]
(?: [0-9] )?
)?
)?
)?
|
1
(?:
[0-2]
(?:
:
(?:
[0-5]
(?: [0-9] )?
)?
)?
)?
)
$