正则表达式不接受日期格式的空格

时间:2018-08-29 09:08:44

标签: regex

我正在尝试采用以下模式,使数据格式DDMMYYYY也不接受空格

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?: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]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

我试图在(/|-|.|\S)中添加\ S,但是它以某种方式中断了。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

按照@Wiktor Stribizew的建议,将所有(\/|-|\.)替换为[-\/.]?的作品

完整的表达式:

  

^(?:( ?: 31([-/。]?)(?: 0?[13578] | 1 [02]))\ 1 |(?:( ?: 29 | 30)([- /.]?)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d) ?\ d {2})$ | ^(?: 29([-/。]?)0?2 \ 3(?:(?:( ?: 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]))\ 4(?:( ?: 1 [6-9] | [2-9] \ d)?\ d {2})$

说明:

(\/|-|\.)曾经是用作分隔的模式,模式的意思是“斜杠或连字符或点或点”,您希望它是斜杠或连字符或点或什么都没有”
您可以使整个小组都变得有趣:(\/|-|\.)?
这种方法有效,但是有一种更简单的编写方法:[-\/.]?,它与“(任何连字符,斜线或点),是易变的”相匹配的。