我在项目中使用了日期格式表达式。我在Javascript中使用过它,效果很好。但是,当我在服务器端使用它时,它给了我Unrecognized Escape Sequence
错误。我的格式如下。即使我尝试过正则表达式。但仍然无法正常工作。我的格式如下。
protected void txt_duedate_validate_server(object source, ServerValidateEventArgs args)
{
string duedate = txtduedate.Text.Trim();
if (duedate == string.Empty || duedate == "Due Date")
{
args.IsValid = false;
return;
}
else
{
string fromdatePat = "/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/;";
Regex re = new Regex(fromdatePat);
string compare=srqstdate.match(fromdatePat);
if(compare==null)
{
args.IsValid = false;
return false;
}
}
}
最佳答案
您的代码看起来像C#。编辑从JavaScript中获取的正则表达式:省略前斜杠和后斜杠(和分号)(/.../;
)。从剩余的斜杠(/
代替\/
)中删除转义。使用逐字字符串文字(@"..."
),因此您无需添加额外的转义符。
string fromdatePat = @"^(((0[1-9]|[12]\d|3[01])/(0[13578]|1[02])/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])/02/((19|[2-9]\d)\d{2}))|(29/02/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))";
Regex re = new Regex(fromdatePat);
if (!re.IsMatch(srqstdate)) { args.IsValid = false; }