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 に答える