如何编写正则表达式格式来接受查询字符串和日期?

时间:2013-05-17 09:16:35

标签: c# regex

我有一个带有日期时间值的查询字符串,输入类似于“?sincemodified = 2013-04-02T08:34:12Z”。

如何编写可选的Regex格式以接受上述内容?

我写了下面但失败了:

Regex.Match(@"?sincemodified=2013-04-02T08:34:12Z", @"^[\?sincemodified=\.*]?$").Success

4 个答案:

答案 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;