gpt4 book ai didi

javascript - 使用正则表达式逐步验证时间戳

转载 作者:行者123 更新时间:2023-11-30 20:42:33 25 4
gpt4 key购买 nike

此正则表达式验证时间戳,例如2018-02-12 00:55:22:

[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]

但是,时间戳应该逐步验证:

201 => true
201a => false
2018- => true
20189 => false

是否有一个不错的(简短的)正则表达式扩展?

……

最佳答案

因为你的问题有 javascript 标签,我假设你正在做“逐步”验证,如“onkeyup”或类似的。以下模式将在构造时验证您的日期时间字符串(我包括一个有效的空字符串,以便在空时不会触发任何标志;但您可以更改为 \d{1,4} 如果你想对空字符串进行操作)。

我尽可能使用 \d 来减少模式长度。

x 模式修饰符与我的转储模式一起使用,以便于阅读。当您将此应用到您的项目时,您可以将其全部压缩并删除 x 标志。

出于习惯,我正在使用非捕获组;因为您可能只是匹配,所以您可以根据需要使用捕获组。

Pattern Demo

图案:

~
^
(?:
\d{0,4}|
\d{4}-|
\d{4}-[01]|
\d{4}-(?:0[1-9]|1[0-2])|
\d{4}-(?:0[1-9]|1[0-2])-|
\d{4}-(?:0[1-9]|1[0-2])-[0-3]|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s[0-2]|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d)|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d):|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d):[0-5]|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d):[0-5]\d|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d):[0-5]\d:|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d):[0-5]\d:[0-5]|
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[0-1])\s(?:2[0-3]|[01]\d):[0-5]\d:[0-5]\d
)
$
~
x

关于javascript - 使用正则表达式逐步验证时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49088518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com