我正在使用带有 vb 代码的 asp.net 开发 Web 应用程序。
我有一个时间字段的文本框,我正在使用正则表达式验证器。
我想要的格式是 HH:MM am。我使用的正则表达式是"(0[1-9]|[1][0-2])[:]" + "(0[0-9]|[1-5][0-9])[ ][A|a|P|p][M|m]"
我正在输入时间示例:08:30 AM 或 08:30 PM,但正则表达式显示错误消息。
任何人都可以帮助我正确的正则表达式。
谢谢大家
舒巴
我正在使用带有 vb 代码的 asp.net 开发 Web 应用程序。
我有一个时间字段的文本框,我正在使用正则表达式验证器。
我想要的格式是 HH:MM am。我使用的正则表达式是"(0[1-9]|[1][0-2])[:]" + "(0[0-9]|[1-5][0-9])[ ][A|a|P|p][M|m]"
我正在输入时间示例:08:30 AM 或 08:30 PM,但正则表达式显示错误消息。
任何人都可以帮助我正确的正则表达式。
谢谢大家
舒巴
使用 RegularExpressionValidator 及以下 ValidationExpression。我用过那个。
ValidationExpression="^(1[0-2]|0[1-9]):[0-5][0-9]\040(AM|am|PM|pm)$"
您不需要使用正则表达式,使用DateTime.TryParse
orDateTime.TryParseExact
代替。我推荐使用常规TryParse
方法,因为它为您的访问者提供了格式的灵活性(例如,一些访问者可能希望使用 24 小时制,而其他人可以使用 12 小时制)。
String input;
DateTime dt;
if( !DateTime.TryParse( input, CultureInfo.InvariantCulture /* change if appropriate */, DateTimeStyles.None, out dt ) ) {
// show error message
}
现在,当您使用验证器时,您需要将此逻辑包装在一个Validator
子类中,但这真的很简单:
public class DateTimeValidator : BaseValidator {
protected override bool EvaluateIsValid() {
String controlValidationValue = base.GetControlValidationValue(base.ControlToValidate);
if( String.IsNullOrEmpty( controlValidationValue ) ) return true;
DateTime dt;
return DateTime.TryParse( input, CultureInfo.InvariantCulture /* change if appropriate */, DateTimeStyles.None, out dt );
}
}
然后(假设您已经在 中注册了标签前缀web.config
)您需要做的就是:
<label>
Enter a valid date/time value.
<input type="text" runat="server" id="someDate" />
<myprefix:DateTimeValidator runat="server" controlToValidate="someDate" />
</label>
<asp:RequiredFieldValidator>
如果您希望该字段是必需的,您将需要一个单独的字段。