如何用正则表达式匹配YYYY-MM-DDTH:i:sZ格式的日期时间串
匹配ISO 8601格式时间的正则表达式
要匹配YYYY-MM-DDTHH:mm:ssZ格式的时间字符串(比如2022-10-06T00:12:39Z),你可以使用下面的正则:
\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z
各部分解析
\d{4}:精准匹配4位年份(比如2022)-\d{2}-\d{2}:匹配-MM-DD部分,确保月份和日期都是两位数字T:匹配日期与时间之间的固定分隔符字母T\d{2}:\d{2}:\d{2}:匹配HH:mm:ss格式的时间,时分秒各两位,用冒号分隔Z:匹配结尾的固定字母Z
如果需要分别捕获日期和时间部分,可以给对应区块加上分组括号:
(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})Z
原正则失败的原因
你之前用的([0-9]+)T([0-9:])Z有两个关键问题:
[0-9]+只能匹配连续数字,无法处理日期里的短横线-,所以匹配不了2022-10-06这种带分隔符的日期([0-9:])只匹配单个数字或冒号,而时间部分是00:12:39这种多字符组合,即便改成[0-9:]+也不够严谨,指定固定位数才能确保匹配符合格式的内容
内容的提问来源于stack exchange,提问作者Toma Tomov
相关产品推荐
相关产品推荐

