日時の値と「?sincemodified=2013-04-02T08:34:12Z」のような入力を含むクエリ文字列があります。
上記を受け入れるオプションの正規表現形式を記述する方法は?
私は以下を書きましたが失敗しました:
Regex.Match(@"?sincemodified=2013-04-02T08:34:12Z", @"^[\?sincemodified=\.*]?$").Success
IMO、REGEX は日付値を解析するのには適していません。代わりにDateTime.TryParse
次のように使用します。
if(Request.QueryString["sincemodified"] != null)
{
DateTime dt;
if(DateTime.TryParse(Request.QueryString["sincemodified"], out dt)
{
//valid date
}
}
使用した正規表現は、「。」をエスケープする必要がないという点だけで優れています。
正規表現は
/\?sincemodified=.*/
これには正規表現を使用する必要はないと思います。
これを使うだけで、
Request.QueryString["sincemodified"];
別のオプションは、HttpUtility.ParseQueryString()を使用することです。
HttpUtility.ParseQueryString("?sincemodified=2013-04-02T08:34:12Z").Get("sincemodified");