1

我从互联网本身获取了这个正则表达式

    RegExp.Pattern = "^(?:(?:(?:0?[13578]|1[02])(\/)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$"

我只知道正则表达式的基本细节而不是所有细节我知道的是它检查日期是否为 dd/mm/yyyy 格式以及日期是否为闰年

我也不知道 ?:?: 等是什么意思。

谁能通过解释上述正则表达式中每个字符的含义来告诉我这个正则表达式的全部含义。

这对我的学习有很大帮助,因为我无法理解正则表达式中存在的大多数字符

4

1 回答 1

2

你已经为学习目的选择了一个可怕的正则表达式,这是肯定的(如果不是彻底的错误,它至少包含一些缺陷,但我不会调试这个烂摊子)。有人可能会争辩说,这是一个最好使用不同工具解决的问题的好例子。

我建议您先阅读基本的正则表达式教程。以下是一些可以帮助您在那里找到相关主题的提示:

^      Start of string anchor
(?...) Non-capturing group
(...)  Capturing group
[...]  Character class
?      Quantifier (1 or 0 repetition of the previous token)
|      Alternation ("or")
\2     Backreference to the second capturing group
\d     Shorthand for digit
\/     (Unnecessary escape sequence, a simple / would work just fine)
$      End of string anchor
于 2012-08-07T08:22:15.893 回答