在我的MVC3應用程序中,我將其中一個實體的出生日期保存爲字符串。爲什麼?因爲我的應用程序允許存儲長期死亡的人的出生日期,例如。蘇格拉底,柏拉圖,伊壁鳩魯等等,據我所知DateTime類不允許。RegEx字符串驗證器
現在顯然我們不知道Epicurus出生的確切日期,例如我們剛剛知道出生年份[341 BCE],所以我想要做的是構建一個自定義驗證器,它將驗證對於出生日期輸入字符串,並確保它們都符合以下格式:
12 Feb 1809
Feb 1809
341
341 BCE
Oct 341 BCE
11 Mar 5 BCE
我將不勝感激,如果有人能幫助我用正則表達式將匹配任何以上的,當然不匹配其他任何東西。
我一直在嘗試了幾個小時,而不是在任何地方獲得:■
UPDATE響應提供的答案:
非常感謝你的傢伙,我希望我是不如你很多在建立RegExes!由於我的應用程序是使用ASP.net MVC3,我想堅持.NET RegEx類(爲了方便起見)。
luastoned答案似乎工作!我似乎無法打破它所有的測試數據。
但有一件事,我可以讓BC嗎?導致一些人使用BC和其他人使用BCE <會是可能的嗎?而且......我說對了,正則表達式不能用BCE代替BC嗎?我必須通過我的C#代碼手動執行該操作嗎?正則表達式只會匹配或不正確。
更新兩個:
M42的正則表達式似乎是更好的工作。我剛剛複製了它並將其用於我的Custom Validator(下面的PasteBin鏈接中的代碼)。
謝謝。
爲什麼'(BCE | \ d {4} )?'? (BCE)「應該是足夠的,因爲」BCE「是最後一個(OP中的例子分別是」1809「,」1809「,」341「,」341「,」341「和」5「是BCE。) – jensgram 2011-12-21 10:03:51
你是對的 - 修好了,謝謝。 – luastoned 2011-12-21 10:06:34
符合:'「」' - 包含單個空格的字符串。表達式還應該有'^'和'$'錨點。 – ridgerunner 2011-12-21 17:27:00