0

这是我验证长度可能在 1 到 4 个字符之间的字符串的要求(H 代表小时,M 代表分钟):

1 个字符 = H(0-9 之间的数字)

2 个字符 = HH(第一个 H 是 0-2 之间的数字,第二个是 0-9 之间的数字,但如果第一个是 2,那么第二个只能是 0-4)

3 个字符 = HMM(第一个 H 是 0-9 之间的数字,第一个 M 是 0-5 之间的数字,第二个 M 是 0-9 之间的数字)

4 个字符 = HHMM(第一个 H 是 0-2 之间的数字,第二个是 0-9 之间的数字,但如果第一个是 2,那么第二个只能是 0-4,第一个 M 是 0-5 之间的数字,第二个 M是 0-9 之间的数字)

使这个具有挑战性的是,我事先不知道字符串的长度,并且相同的数字可能意味着不同的事情,具体取决于字符串的长度。关于 JavaScript 正则表达式的任何想法来验证这一点?

4

1 回答 1

1

您可以使用这样的正则表达式:

^(2[0-4]|[01]?\d)([0-5]\d)?$

分解:

^                   beginning of string
2[0-4]              digit 2 followed by digit 0-4
|                   or
[01]?\d             digit 0-1, optional, followed by any digit
([0-5]\d)?          digit 0-5 followed by any digit, as whole optional
$                   end of string

注意:也许您的意思是 0-23 小时而不是 0-24 小时:

^(2[0-3]|[01]?\d)([0-5]\d)?$
于 2012-10-14T18:40:12.697 回答