2015-12-02 81 views
1

我想創建一個只對有效的日期相匹配(在MM/DDMM/DD/YY(YY)格式)正則表達式正則表達式匹配的有效日期只有

我現在正則表達式(\d+)/(\d+)/?(\d+)?很簡單,但它的任何數量的具有/之前匹配/後。即如果一個字符串是2015/2016 12/25它會將這兩個視爲匹配,但我只想要12/25部分。

Here是一個樣本RegEx的鏈接。

+1

嘗試['(\ d +)/(\ d +)/?(\ d +)?$'](https://regex101.com/r/pR8wD3/3)。 –

+0

日期並不總是在字符串的末尾。他們被文字包圍 – Bijan

+2

然後你的做法是不正確的。正則表達式匹配你要求它匹配的東西。你需要重新定義需求。 –

回答

1

您可以添加單詞邊界(\b)以確保您匹配日期字符串作爲整個「單詞」(以便匹配不會在數字中間開始),並限制匹配幫助的事件\d限制性量詞:

\b(\d{2})/(\d{1,2})/?(\d{4}|\d{2})?\b 

參見regex demo

正則表達式擊穿:

  • \b - 單詞邊界的數字
  • (\d{2})前權,以確保有一個非文字字符或字符串的開始 - 嚴絲合縫2個位數
  • / - 匹配一個/
  • (\d{1,2}) - 匹配和捕獲1 2位數字
  • /? - 匹配的1或0 /
  • (\d{4}|\d{2})? - 匹配的1或0的出現4首或2個數字
  • \b - 結尾字邊界
相關問題