【发布时间】:2011-12-21 09:48:47
【问题描述】:
在我的 MVC3 应用程序中,在其中一个实体上,我将出生日期保存为字符串。为什么 ?因为我的应用程序允许存储早已死去的人的出生日期,例如。苏格拉底、柏拉图、伊壁鸠鲁……等等,据我所知 DateTime 类不允许这样做。
现在显然我们不知道伊壁鸠鲁的确切出生日期,例如,我们只知道出生年份 [公元前 341 年],所以我正在考虑构建一个自定义验证器,它将验证输入出生日期的字符串,并确保它们都符合以下格式:
12 Feb 1809
Feb 1809
341
341 BCE
Oct 341 BCE
11 Mar 5 BCE
我需要编写一个正则表达式来匹配上述任何一个,当然不匹配其他任何内容。
更新
非常感谢你,我希望我在构建 RegExes 方面和你一样好!由于我的应用程序使用 ASP.net MVC3,因此我想坚持使用 .NET RegEx 类(为方便起见)。
luastoned 的答案似乎有效;我似乎无法用我扔给它的所有测试数据来打破它的逻辑。
但有一件事,我也可以允许 BC 吗?因为有些人使用 BC 而其他人使用 BCE
更新 2
M42 的正则表达式似乎工作得更好。我刚刚复制了它并在我的自定义验证器中使用了它(下面的 PasteBin 链接中的代码)。
【问题讨论】:
标签: regex asp.net-mvc-3 validation