次の正規表現は何をしますか?
^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$
特に、\1パーツの目的は何ですか?
チュートリアルをチェックアウトする必要があります。そこにはほとんど何も進んでいません(あなたが指摘したことを除い\1て):
^ # the start of the string
\d # a digit
{1,2} # 1 or 2 of those
( # start the first subpattern, which can later be referred to with \1
\- # a literal hyphen (there is no need for escaping, but it doesn't hurt)
| # or
\/ # a literal slash
| # or
\. # a literal period
) # end of subpattern
\d{1,2} # one or two more digits
\1 # the exact same thing that was matched in the first subpattern. this
# is called a backreference
\d{4} # 4 digits
$ # the end of the string
つまり、これは、入力文字列が正確に 1 つの日付を含み、それ以下でもなく、形式ddmmyyyy(または可能性もありますmmddyyyy) で、可能な区切り文字.または-(/および一貫した区切り文字の使用) を含むことを表明します。正確な日付を保証するものではないことに注意してください。月と日は から00までのいずれか99です。
の正確な意味は、\d使用している正規表現エンジンとカルチャによって異なることに注意してください。通常は[0-9](任意の ASCII 数字) を意味します。ただし、たとえば .NET では、「数字を表す任意の Unicode 文字」を意味することもあります。
^文字列の開始\d{1,2}1 桁または 2 桁の数字 (0 ~ 9) に一致(\-|\/|\.)「-」または「/」または「.」のいずれかに一致します。\d{1,2}1 桁または 2 桁 (0 ~ 9) に再度一致します。\1後方参照です。No. 3 のグループによってキャプチャされた同じキャラクターの別のインスタンスと一致します。\d{4}4桁に一致$文字列の終わりこれは、次の形式の日付と一致します。dd、mm、およびyyyy範囲はチェックされていないため、日付がまだ無効である可能性があることに注意してください。
d-m-yyyy
d/m/yyyy
d.m.yyyy
d&mはそれぞれ 1桁または2 桁です。
それは一致します:
は\1、最初のグループで一致した値への後方参照(\-|\/|\.)です。
例えば:
2-14-2003
99.99.9999
1/2/0001