2012-11-22 41 views

回答

4

您應該檢查出a tutorial。有任何勉強在那裏先進的(當然除了那些\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 

即這聲明輸入的字符串恰好包含格式爲ddmmyyyy(或者也可以是mmddyyyy)的一個日期(不多不少於),其中可能的分隔符爲.,-/(以及一致的分隔符用法)。請注意,它不能確保正確的日期爲。月和日可以是從0099之間的任何值。

注意\d的確切含義取決於您使用的正則表達式引擎和文化。 通常這意味着[0-9](任何ASCII碼)。但是,例如在.NET中,它也可以表示「任何代表數字的Unicode字符」。

3
  1. ^串的開始
  2. \d{1,2}相配1或2位數字(0-9)
  3. (\-|\/|\.)匹配或者一個 「 - 」 OR 「/」 OR 「」
  4. \d{1,2}相配1或2位數字(0-9)再次
  5. \1反向引用。匹配組捕獲的同一字符的另一個實例在第3號
  6. \d{4}相配4位數字
  7. $

結束這將匹配下列格式的日期。請注意,ddmmyyyy範圍未被檢查,所以日期仍然可能無效。

d-m-yyyy 
d/m/yyyy 
d.m.yyyy 

d & m可以是每1個 2位數字。

+0

關於格式清單:月可以是一個單一的數字 – Bergi

+0

@Bergi哦廢話。組合將是兩倍。我只是提到這一點。 :) –

1

它匹配:

  • 一個或兩個數字
  • 破折號,斜線或週期
  • 一個或兩個數字
  • 另一個分離器就像一個早期
  • 四位

\1是對第th e值與第一組匹配,即(\-|\/|\.)

例如:

2-14-2003 
99.99.9999 
1/2/0001 
+0

氣味像一個蹩腳的日期正則表達式 – Bohemian

相關問題