Javascript 扩展正则表达式以包含时间格式sss,th
这是这个问题的延伸: 我需要扩展正则表达式以包含一个仅以秒为单位的时间。例如,一次(慢速)400米跑的时间可以定为63.43秒 前面问题中回答的表达式Javascript 扩展正则表达式以包含时间格式sss,th,javascript,regex,Javascript,Regex,这是这个问题的延伸: 我需要扩展正则表达式以包含一个仅以秒为单位的时间。例如,一次(慢速)400米跑的时间可以定为63.43秒 前面问题中回答的表达式^(?::::)?(?:[0-5]\d:|[0-9]:)?(?:[0-5]\d |\d)(?:[,]\d\d?$)涵盖了以下所有时间: 0:59 12:34:56 12:34:5,4 1:2:3,56 1:23,45 1:2,12 我扩展它的尝试失败了: (?:[0-5]\d:[0-9]:)(?:[0-5]\d |\d)(?:[。]\d\d?)(?
^(?::::)?(?:[0-5]\d:|[0-9]:)?(?:[0-5]\d |\d)(?:[,]\d\d?$)
涵盖了以下所有时间:
0:59
12:34:56
12:34:5,4
1:2:3,56
1:23,45
1:2,12
我扩展它的尝试失败了:
(?:[0-5]\d:[0-9]:)(?:[0-5]\d |\d)(?:[。]\d\d?)(?:\d{1,3})(?:[,。]\d)(?:\d)$
我已将其添加到
我似乎真的无法理解正则表达式 这个正则表达式呢
^(?:(\d{1,2}):(\d{1,2}))?(?::?(\d{1,3}))?(?:[.,](\d{1,3}))?$
描述
演示
讨论
这个正则表达式非常宽松。它允许这样的值:
99:99:999.999 <--
^ ^ ^ ^
| | | |
HH | | |
MM | |
SS |
, is allowed also
99:99:999.999如果您要允许这么多通用格式,您可能希望尝试不受限制地使用此选项,以允许编程验证。是的,如果您不断向单个正则表达式添加特殊情况,则可能会使其成为不可读、不可维护的混乱。我同意你应该把它分成许多不同的格式,对每一种格式进行测试,直到找到匹配的格式。对于新的情况,秒列(和禁止分钟列)听起来像是\d+
,这会起作用,假设与上一个问题相同。是的,我想把它分解,我可以这样做,因为我需要60秒以上的唯一情况是在400米比赛中。@Phil:就我而言,所有的正则表达式都不可读!非常感谢-真棒的回答。当添加分钟时,不允许以秒为单位的时间超过59.99。例如,62.56是可以的。162.56也可以,尽管不太可能被要求,除非是我奶奶开的400。不允许使用1:62.56。@Craigm当您看到此1:2
时,是1小时2分钟
还是1分2秒
?即1小时2分钟。1小时2秒等于1:0:2