我有正则表达式
^(?:(?: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})$
有谁能告诉我如何从这个正则表达式模式中找到可能的匹配?
答案 0 :(得分:2)
Here是您的正则表达式流程的样子:
为了让你开始(当然为了简洁起见),让我们始终走最顶层的路线:)
首先,我们有三种方法可供选择,我们将选择最顶层的一种方式!,^
表示字符串的开头,之后我们可能会遇到31
或{ {1}}或29
,但遵循选择我们刚刚制作的最顶层的规则;),我们选择30
,之后可能会出现{{1}的字符序列(其他可能性为31
和\/
)。
然后在我们的路径中可能有-
,(我们将选择“not”case!),然后选择\.
之一,然后是{{1}的字符序列},那么我们前面有三个方向,我们最常见的是0
,然后是1, 3, 5, 7, 8
(两次\1
),我们就是最后,那里应该是字符串的结尾。多么美好的旅程!!
因此,一个可能的匹配可能是\
。现在轮到你了,走其他路线:)