重复 dd/mm/yyyy 带分隔符的正则表达式
repeating dd/mm/yyyy regex with separator
我正在处理客户端验证,在某些情况下,我的用户可以使用日期选择器选择一个日期范围或同时选择多个日期。
我发现这个正则表达式是有效的简单日期:
Date regex
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))(?:(?:1[6-9]|[2-9]\d)?\d{2})$
这个允许多种格式:
dd/mm/yyyy
年月日
dd.mm.yyyy
在第一种情况(日期范围)中,我使用“-”作为分隔符,我想用正则表达式检查所选范围:
01/02/2018 - 02/03/2018
我变通了,我可以用更简单的正则表达式来做到这一点:
^((\d{2})(?:\ \-\ |)){2}$
on this string
02 - 03
当我用日期正则表达式替换第一部分 (\d{2}) 并测试显示的日期范围 (01/02/2018 - 02/03/2018) 时,正则表达式不匹配。
在第二种情况下(选择了几个日期),我使用“,”作为分隔符,我正在寻找一个贪婪的量词解决方案。
你有什么想法吗?
谢谢
这是 select 范围内的正则表达式,分隔符为逗号或减号
([0-2][0-9]|[3][0-1])(\/|-|\.)([0][0-9]|[1][0-2])(\/|-|\.)(\d{4})\s(-|,)\s([0-2][0-9]|[3][0-1])(\/|-|\.)([0][0-9]|[1][0-2])(\/|-|\.)(\d{4})
它在很多情况下都有效,如下所示
输入
# dd/mm/yyyy - dd/mm/yyyy 01/02/2018 - 02/03/2018 01/02/2018 , 02/03/2018
# dd-mm-yyyy - dd-mm-yyyy 01-02-2018 - 02-03-2018 01-02-2018 , 02-03-2018
# dd.mm.yyyy - dd.mm.yyyy 01.02.2018 - 02.03.2018 01.02.2018 , 02.03.2018
输出
# 01/02/2018 - 02/03/2018 01/02/2018 , 02/03/2018
# 01-02-2018 - 02-03-2018 01-02-2018 , 02-03-2018
# 01.02.2018 - 02.03.2018 01.02.2018 , 02.03.2018
我正在处理客户端验证,在某些情况下,我的用户可以使用日期选择器选择一个日期范围或同时选择多个日期。
我发现这个正则表达式是有效的简单日期:
Date regex
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))(?:(?:1[6-9]|[2-9]\d)?\d{2})$
这个允许多种格式:
dd/mm/yyyy
年月日
dd.mm.yyyy
在第一种情况(日期范围)中,我使用“-”作为分隔符,我想用正则表达式检查所选范围:
01/02/2018 - 02/03/2018
我变通了,我可以用更简单的正则表达式来做到这一点:
^((\d{2})(?:\ \-\ |)){2}$
on this string
02 - 03
当我用日期正则表达式替换第一部分 (\d{2}) 并测试显示的日期范围 (01/02/2018 - 02/03/2018) 时,正则表达式不匹配。
在第二种情况下(选择了几个日期),我使用“,”作为分隔符,我正在寻找一个贪婪的量词解决方案。
你有什么想法吗?
谢谢
这是 select 范围内的正则表达式,分隔符为逗号或减号
([0-2][0-9]|[3][0-1])(\/|-|\.)([0][0-9]|[1][0-2])(\/|-|\.)(\d{4})\s(-|,)\s([0-2][0-9]|[3][0-1])(\/|-|\.)([0][0-9]|[1][0-2])(\/|-|\.)(\d{4})
它在很多情况下都有效,如下所示
输入
# dd/mm/yyyy - dd/mm/yyyy 01/02/2018 - 02/03/2018 01/02/2018 , 02/03/2018
# dd-mm-yyyy - dd-mm-yyyy 01-02-2018 - 02-03-2018 01-02-2018 , 02-03-2018
# dd.mm.yyyy - dd.mm.yyyy 01.02.2018 - 02.03.2018 01.02.2018 , 02.03.2018
输出
# 01/02/2018 - 02/03/2018 01/02/2018 , 02/03/2018
# 01-02-2018 - 02-03-2018 01-02-2018 , 02-03-2018
# 01.02.2018 - 02.03.2018 01.02.2018 , 02.03.2018