我有一个带有日期时间值的查询字符串,输入类似于“?sincemodified = 2013-04-02T08:34:12Z”。
如何编写可选的Regex格式以接受上述内容?
我写了下面但失败了:
Regex.Match(@"?sincemodified=2013-04-02T08:34:12Z", @"^[\?sincemodified=\.*]?$").Success
答案 0 :(得分:0)
我不认为,你需要使用正则表达式。
只需使用它,
Request.QueryString["sincemodified"];
另一种选择是使用 HttpUtility.ParseQueryString() ,
HttpUtility.ParseQueryString("?sincemodified=2013-04-02T08:34:12Z").Get("sincemodified");
答案 1 :(得分:0)
你使用的正则表达式很好,只是你不需要逃避“。”
正则表达式可能是
/\?sincemodified=.*/
答案 2 :(得分:0)
IMO,REGEX不是解析日期值的好主意,而是使用DateTime.TryParse
之类的:
if(Request.QueryString["sincemodified"] != null)
{
DateTime dt;
if(DateTime.TryParse(Request.QueryString["sincemodified"], out dt)
{
//valid date
}
}
答案 3 :(得分:0)
^:意味着开始, *:无论性格如何, $:表示文本的结尾,
所以你不需要指定^ .. * $来表示你想要的东西,只需^ ..就足够了,所以:
Regex.Match(@"?sincemodified=2013-04-02T08:34:12Z", @"^\?sincemodified=").Success;
会工作
如果你想要的东西不是空的,经过修改后,这是一个改善:
Regex.Match(@"?sincemodified=2013-04-02T08:34:12Z", @"^\?sincemodified=(?!\s*$).+").Success;