从正则表达式查找模式

时间:2015-05-26 13:32:49

标签: php regex regex-lookarounds

我有正则表达式

^(?:(?: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})$

有谁能告诉我如何从这个正则表达式模式中找到可能的匹配?

1 个答案:

答案 0 :(得分:2)

Here是您的正则表达式流程的样子:

Regular expression visualization

为了让你开始(当然为了简洁起见),让我们始终走最顶层的路线:)

首先,我们有三种方法可供选择,我们将选择最顶层的一种方式!,^表示字符串的开头,之后我们可能会遇到31或{ {1}}或29,但遵循选择我们刚刚制作的最顶层的规则;),我们选择30,之后可能会出现{{1}的字符序列(其他可能性为31\/)。

然后在我们的路径中可能有-,(我们将选择“not”case!),然后选择\.之一,然后是{{1}的字符序列},那么我们前面有三个方向,我们最常见的是0,然后是1, 3, 5, 7, 8(两次\1),我们就是最后,那里应该是字符串的结尾。多么美好的旅程!!

因此,一个可能的匹配可能是\。现在轮到你了,走其他路线:)