我不是正则表达式的专家,所以需要你的帮助。我想验证日期是否符合“dd-MMM-yyyy”的格式,即07-Jun-2012。我正在使用asp.net中的RegularExpressionValidator。
有人可以帮我提供表达式吗?
感谢您分享您的时间。
我不是正则表达式的专家,所以需要你的帮助。我想验证日期是否符合“dd-MMM-yyyy”的格式,即07-Jun-2012。我正在使用asp.net中的RegularExpressionValidator。
有人可以帮我提供表达式吗?
感谢您分享您的时间。
使用DatePicker可能是最佳选择。然而,既然这不是你所问的,这里有一个选项(虽然它对大小写敏感):
^(([0-9])|([0-2][0-9])|([3][0-1]))\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\-\d{4}$
另外,这里有一个可以轻松测试正则表达式的地方:http://www.regular-expressions.info/javascriptexample.html
日期正则表达式不包含前导零。
^\d{1,2}-[a-zA-Z]{3}-\d{4}$
更新正则表达式以匹配带前导零的日期。
^\d{2}-[a-zA-Z]{3}-\d{4}$
\d
表示任何数字,因此第一个接受 '0' 和 '88' 作为日期。同时 [a-zA-Z]{3}
匹配 "xYz"。 - Hans Kesting虽然不是正则表达式,但您可以使用内置的DateTime.TryParseExact函数来验证日期时间字符串。
DateTime dateTime;
string toValidate = "01-Feb-2000";
bool isStringValid = DateTime.TryParseExact(
toValidate,
"dd-MMM-yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dateTime);
^(([1-9])|([0][1-9])|([1-2][0-9])|([3][0-1]))\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\-\d{4}$
注意事项/异常情况:
1.注意大小写敏感问题。例如,'DEC'将不会通过,而'Dec'将会通过。在测试之前(如果您的应用程序允许),您可能需要将正则表达式字符串和测试字符串转换为小写。
2.这不会捕获不存在的日期,比如2月30日、6月31日等。
"\d{4}\d{2}\d{2}|\d{2}/\d{2}/\d{4}|\d{2}.\d{2}.\d{4}|\d{2}\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)|(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}\-\d{4}|\d{4}-\d{2}-\d{2}"
mm.dd.yyyy
, d-MMM
, mm.dd.yyyy
。"^(([1-9]|0[1-9]|1[0-9]|2[1-9]|3[0-1])[-]([JAN|FEB|MAR|APR|MAY|JUN|JULY|AUG|SEP|OCT|NOV|DEC])[-](d{4}))$"
var x = DateTime.Parse("30-Feb").GetDateTimeFormats();
我昨天学会了使用它(用于不同的目的)。因此,尝试捕获该语句以处理日期的有效性/无效性:)
using System.Text.RegularExpressions
private void fnValidateDateFormat(string strStartDate,string strEndDate)
{
Regex regexDt = new Regex("(^(((([1-9])|([0][1-9])|([1-2][0-9])|(30))\\-([A,a][P,p][R,r]|[J,j][U,u][N,n]|[S,s][E,e][P,p]|[N,n][O,o][V,v]))|((([1-9])|([0][1-9])|([1-2][0-9])|([3][0-1]))\\-([J,j][A,a][N,n]|[M,m][A,a][R,r]|[M,m][A,a][Y,y]|[J,j][U,u][L,l]|[A,a][U,u][G,g]|[O,o][C,c][T,t]|[D,d][E,e][C,c])))\\-[0-9]{4}$)|(^(([1-9])|([0][1-9])|([1][0-9])|([2][0-8]))\\-([F,f][E,e][B,b])\\-[0-9]{2}(([02468][1235679])|([13579][01345789]))$)|(^(([1-9])|([0][1-9])|([1][0-9])|([2][0-9]))\\-([F,f][E,e][B,b])\\-[0-9]{2}(([02468][048])|([13579][26]))$)");
Match mtStartDt = Regex.Match(strStartDate,regexDt.ToString());
Match mtEndDt = Regex.Match(strEndDate,regexDt.ToString());
if (mtStartDt.Success && mtEndDt.Success)
{
//piece of code
}
}