2011-03-01 166 views
1

我需要驗證一個字符串是以下格式/序列模式匹配的字符串

LGaaaaaaaaaaYYMMDDnnnnn 

對於字符串是有效的,它具有開始與隨後10個字符中的字符「LG」,接着以格式(YYMMDD)後跟5個數字的日期。

以下是我想出了

String patter = ^LG{1}[a-z][A-Z]{10}[0-9]{6}[0-9]{5} 
  • 我如何檢查的字符串中開始與「LG」
  • 我如何檢查十個字符後,「LG」確實是在字符「LG」之後
  • 如何檢查YYMMDD是否爲有效日期
  • 如何檢查字符串末尾的數字正好是5位數。

- 我可以使用Simpledateformat來驗證字符串作爲我認爲的日期。

感謝

+0

您是否試過這個?你幾乎在那裏。 – 2011-03-01 17:06:02

回答

1
  1. 我覺得你的正則表達式應該更像:LG[a-zA-Z]{10}[0-9]{6}[0-9]{5}
  2. 如果字符串匹配的模式,採用串拔出日期和解析它的SimpleDateFormat來驗證它確實是一個好日子。
+0

從表達式的開始處刪除^有什麼影響?我認爲如果LG在字符串的開頭,這個字符串將是有效的。 – ziggy 2011-03-01 17:06:44

+0

^意思不是,你實際上想要匹配LG而不是匹配LG。 – jzd 2011-03-01 20:04:14

+0

^表示實際上在某些情況下字符串的開頭。你正在考慮[^ a]這意味着沒有。 – 2011-03-08 17:17:27

2

這取決於你如何使用它。如果你使用Mather.matches方法,那麼^並不是真的需要,因爲它將匹配整個字符串。如果您使用find()方法,那麼^會有所作爲