我正在尝试采用以下模式,使数据格式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,但是它以某种方式中断了。有任何想法吗?
答案 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})$
说明:
(\/|-|\.)
曾经是用作分隔的模式,模式的意思是“斜杠或连字符或点或点”,您希望它是斜杠或连字符或点或什么都没有”
您可以使整个小组都变得有趣:(\/|-|\.)?
。
这种方法有效,但是有一种更简单的编写方法:[-\/.]?
,它与“(任何连字符,斜线或点),是易变的”相匹配的。