我的第一個問題和Im興奮...我已經潛伏自上線和愛的網站,但我道歉的任何新手錯誤,格式等...爲什麼此數據YYYY-MM-DD正則表達式在Java中失敗?
我試圖驗證格式在Java中包含日期的字符串字段。我們將在字符串中接收日期,我將在將其解析爲真正的Date對象之前驗證其格式。傳入的格式爲YYYY-MM-DD格式。但是我卡在我的測試之一,如果我通過在「1999-12-33」會導致測試失敗(因爲它應該具有的天數時33),與此不完整的模式:
((19|20)\\d{2})-([1-9]|0[1-9]|1[0-2])-([12][0-9]|3[01])
然而,由於一旦我添加以粗體顯示的字符下方通過測試(但是不應該)
((19|20)\\d{2})-([1-9]|0[1-9]|1[0-2])-(0[1-9]|[1-9]|[12][0-9]|3[01])
*額外的說明,我知道我可以改變0[1-9]|[1-9]
爲0?[1-9]
,但我想打破一切下降到其最簡單的格式試圖找出爲什麼這不起作用。
這裏是廢的測試,我已經把通過所有的不同的日期場景運行:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class scrapTest {
public scrapTest() {
}
public static void main(String[] args) {
scrapTest a = new scrapTest();
boolean flag = a.verfiyDateFormat("1999-12-33");
}
private boolean verfiyDateFormat(String dateStr){
Pattern datePattern = Pattern.compile("((19|20)\\d{2})-([1-9]|0[1-9]|1[0-2])-(0[1-9]|[1-9]|[12][0-9]|3[01])");
Matcher dateMatcher = datePattern.matcher(dateStr);
if(!dateMatcher.find()){
System.out.println("Invalid date format!!! -> " + dateStr);
return false;
}
System.out.println("Valid date format.");
return true;
}
}
我一直爲編程〜10年,但非常新的Java,所以請隨時解釋什麼像你認爲合適的那樣基本。
感謝,這是它。匹配正確匹配整個模式。 – ProfessionalAmateur 2010-03-24 15:36:20
沒問題,我的榮幸:) – miorel 2010-03-24 15:47:58