2011-11-27 830 views
4

日期格式dd \ mm \ yyyy的正則表達式是什麼?我無法找到這種格式的正則表達式?日期格式dd mm yyyy的正則表達式是什麼?

+1

使用答案從http://stackoverflow.com/questions/3386520/parse-date-from-string-in-this-format-dd-mm-yyyy-to-dd-mm-yyyy並將斜槓(/)更改爲雙反斜槓(\\\) –

+0

@AlexTaylor感謝您的快速回復,我正在尋找以上日期格式的常規exp,您能告訴我那個嗎? – Sandy

+2

你真的想用反斜槓的日期格式嗎? – EJP

回答

7

在我看來,最好是使用正則表達式驗證格式,但用代碼驗證有效性(在您的情況下爲Java)。嘗試檢查每月不同的日子和使用正則表達式的閏年之類的東西是荒謬的。

我建議解析使用像([0-9]{2})\\([0-9]{2})\\([0-9]{4})一個正則表達式的時間,然後提取每個片(ddmm,和yyyy,分別地),並嘗試創建java.util.Date對象了出來。

注意以下幾點:

  • 日期通常寫有斜槓(/)而不是反斜槓(\
  • 在Java中的字符串,寫在正則表達式的反斜槓字符,你將有實際上爲\\\\寫入兩個反斜槓(\\)個字符。在寫一個反斜槓的java字符串中,我們需要轉義字符(這又是一個\)。
+0

+1不應該是'([0-9] {2})\\\\([0-9] {2})\\\\([0-9] {4})'? – blackcompe

+0

是的,它應該在一個Java字符串中。上面的正則表達式是泛型正則表達式,但如果使用Java字符串,則需要使用四個斜槓(請參閱我的答案末尾的註釋**(b)**)。 –

+0

我明白了。感謝澄清。 – blackcompe

1
 /** 
     * Created with IntelliJ IDEA. 
     * User: S34N 
     * Date: 2013/07/30 
     * Time: 8:21 AM 
     * To change this template use File | Settings | File Templates. 
     */ 



     //Import the required classes/packages 
     import javax.swing.*; 
     import java.text.DateFormat; 
     import java.text.SimpleDateFormat; 
     import java.util.Date; 

     public class dateInputScan { 

      public static void main(String args[]) { 

       dateInputScan run = new dateInputScan(); 
       run.dateInputScan(); 
      } 

      public void dateInputScan() { 

       //Instantiating variables 
       String lvarStrDateOfTransaction = null; 
       DateFormat formatter = null; 
       Date lvarObjDateOfTransaction = null; 

       //Use one of the following date formats. 
       lvarStrDateOfTransaction = "29/07/2013"; 
       //lvarStrDateOfTransaction = "29-07-2013"; 
       //lvarStrDateOfTransaction = "20130729"; 
       //lvarStrDateOfTransaction = "2013-07-29"; 
       //lvarStrDateOfTransaction = "29/07/2013"; 

       //You can also add your own regex (Regular Expression) 
       if (lvarStrDateOfTransaction.matches("([0-9]{2})/([0-9]{2})/([0-9]{4})")) { 
        formatter = new SimpleDateFormat("dd/MM/yyyy"); 
       } else if (lvarStrDateOfTransaction.matches("([0-9]{2})-([0-9]{2})-([0-9]{4})")) { 
        formatter = new SimpleDateFormat("dd-MM-yyyy"); 
       } else if (lvarStrDateOfTransaction.matches("([0-9]{4})([0-9]{2})([0-9]{2})")) { 
        formatter = new SimpleDateFormat("yyyyMMdd"); 
       } else if (lvarStrDateOfTransaction.matches("([0-9]{4})-([0-9]{2})-([0-9]{2})")) { 
        formatter = new SimpleDateFormat("yyyy-MM-dd"); 
       } else if (lvarStrDateOfTransaction.matches("([0-9]{4})/([0-9]{2})/([0-9]{2})")) { 
        formatter = new SimpleDateFormat("yyyy/MM/dd"); 
       } 

       try { 
        lvarObjDateOfTransaction = formatter.parse(lvarStrDateOfTransaction); 
        JOptionPane.showMessageDialog(null, "Date: " + lvarObjDateOfTransaction); 

       } catch (Exception ex) { //Catch the Exception in case the format is not found. 
        JOptionPane.showMessageDialog(null, ex); 
       } 
      } 
     } 
5

正則表達式模式日/月/年

String regex = "^([0-2][0-9]||3[0-1])/(0[0-9]||1[0-2])/([0-9][0-9])?[0-9][0-9]$"; 
0

我嘗試這樣^[0-3]{1}[0-9]{1}/[0-1]{1}[1-2]{1}/[1-9]{1}[0-9]{3}$和它的工作原理

String dateRegEx="^[0-3]{1}[0-9]{1}/[0-1]{1}[1-2]{1}/[1-9]{1}[0-9]{3}$"; 
System.out.println(Pattern.matches(dateRegEx, "01/01/1990")); 
0

([0-2][0-9]||3[0-1])\\(0[0-9]||1[0-2])\\((19|20)\d\d)

以上的正則表達式將驗證 第一2恰拉CTER在0-31 然後下一組的範圍之間必須包含的字符範圍0-12之間則 下一組包含一年的範圍之間1900年至2099年

這是爲我工作完全正常

相關問題