gpt4 book ai didi

regex - 特定日期格式的正则表达式

转载 作者:行者123 更新时间:2023-12-01 07:33:35 25 4
gpt4 key购买 nike

我需要帮助来形成日期的正则表达式以匹配 YYYYMMDD 格式。以下是详细信息:

输入验证:输入的值是长度为 8 且全是数字。这第一个字符是 1 或 2。第 5 个和第 6 个字符介于 01 和 12 之间,最后两个字符在 01 和 31 之间

我在表达式下面尝试过,但无法理解我们如何提供值范围,例如 1-12 表示月数和 1-31 表示天数。

SELECT 'P' from dual where REGEXP_LIKE ('122412','^[1][2][0-9]{2}[1|12]$');

提前致谢!

最佳答案

这是个坏主意。验证日期是否正确的唯一方法是尝试将其转换为日期。如果转换失败,那么它不是日期;如果它成功了,那么它可能是。日期对于常规语言来说太复杂了,无法解析。

因此,创建一个将其转换为日期的函数;你可以使 if 比你这里的更通用,这样它就可以重新用于其他目的:

create or replace function validate_date (
PDate in varchar2
, PDateFormat in varchar2
) return date is
begin
return to_date(PDate, PDateFormat);
exception when others then
return null;
end;

如果能够验证日期和日期格式匹配,则返回一个日期,否则如果有任何错误则返回 NULL。您的查询将变为:

select 'P' from dual where validate_date('20140506', 'yyyymmdd') is not null

关于regex - 特定日期格式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23503104/

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