根据区域性将日期和时间正则表达式设置为 RegularExpressionValidator



我面临验证日期的问题&时间根据当地文化而定。

这是我的正则表达式验证器

  <asp:RegularExpressionValidator
       ID="regTime"
       ControlToValidate="txtTime"
       Display="Dynamic"
       Text="Invalid Time Format"
       ValidationExpression="^((1[012])|(0?[1-9])):([0-5][0-9]) ?([aApP][mM])$"
       runat="server">
 </asp:RegularExpressionValidator>

上面的验证器验证en-en区域性的时间。

现在,我正在开发一个应用程序,需要能够处理每个文化的日期和时间格式,我想要一个具体的解决方案来验证日期& &;

例如,美国时间格式为h:mm tt (01:20 PM) &德国时间格式为HH:mm(13:20)。

对不起,这让我想起了一句流行的话:

有些人在遇到问题时,会想"我知道,我就用。正则表达式。"现在他们有两个问题。

无论如何,你不需要正则表达式,. net的DateTime和CultureInfo最适合解决这个问题。创建您自己的自定义验证器,执行如下操作:
var usCulture = new CultureInfo("en-us");
DateTime.ParseExact("3:20 PM", usCulture.DateTimeFormat.ShortTimePattern, usCulture);
var germanCulture = new CultureInfo("de");
DateTime.ParseExact("13:20", germanCulture.DateTimeFormat.ShortTimePattern, germanCulture);

如果你想要一个返回值而不是一个异常,使用DateTime.TryParseExact

最新更新