根据文化将日期和时间正则表达式设置为 RegularExpressionValidator [关闭]

Posted

技术标签:

【中文标题】根据文化将日期和时间正则表达式设置为 RegularExpressionValidator [关闭]【英文标题】:set Date & time regular expression to RegularExpressionValidator according to culture [closed] 【发布时间】:2014-08-05 05:30:28 【问题描述】:

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

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

  <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)。

【问题讨论】:

【参考方案1】:

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

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

无论如何,您不需要正则表达式。 .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

【讨论】:

由于这个问题是关于 asp.net 的,他可能想将正则表达式传输到 javascript 以验证日期格式,在这种情况下这个解决方案没有帮助?

以上是关于根据文化将日期和时间正则表达式设置为 RegularExpressionValidator [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

根据文化显示正确的日期格式

正则表达式

(Oracle) SQL 中的正则表达式将日期/时间拆分为单独的日期和时间列

Jmeter正则表达式

将任何日期字符串转换为当前文化日期格式

C#:更改正则表达式的 NumberDecimalSeparator