-1

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

如何编写可选的正则表达式格式以接受上述?

我写了以下但失败了:

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

4 回答 4

0

^: 表示开头, * : 任何字符, $ : 表示文本结尾,

因此,您不需要指定 ^..*$ 来表示您想要开头的内容,只需 ^.. 就足够了,所以:

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

会工作

如果你想在因为修改后不为空,这里是一种改进:

Regex.Match(@"?sincemodified=2013-04-02T08:34:12Z", @"^\?sincemodified=(?!\s*$).+").Success;
于 2013-05-17T09:45:25.150 回答
0

我不认为,您需要为此使用正则表达式。

就用这个,

Request.QueryString["sincemodified"];

另一种选择是使用HttpUtility.ParseQueryString()

HttpUtility.ParseQueryString("?sincemodified=2013-04-02T08:34:12Z").Get("sincemodified");
于 2013-05-17T09:20:35.137 回答
0

您使用的正则表达式很好,只是您不需要转义“。”

正则表达式可能是

/\?sincemodified=.*/
于 2013-05-17T09:21:00.797 回答
0

IMO,REGEX 不是解析日期值的好主意,而是使用DateTime.TryParse如下:

if(Request.QueryString["sincemodified"] != null)
{
   DateTime dt;
   if(DateTime.TryParse(Request.QueryString["sincemodified"], out dt)
     {
      //valid date
     }
}
于 2013-05-17T09:26:08.120 回答