C# 验证正则表达式匹配
我正在尝试验证C# 验证正则表达式匹配,c#,regex,C#,Regex,我正在尝试验证ID以及我做错了什么 下面是我的代码: ID: "a485c610-7d49-4877-a4c9-bdaaaad417be" public ActionResult Verify(string id) { if (string.IsNullOrEmpty(id) || (!Regex.IsMatch(id, @"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}"))) { //oops } else {
ID
以及我做错了什么
下面是我的代码:
ID: "a485c610-7d49-4877-a4c9-bdaaaad417be"
public ActionResult Verify(string id)
{
if (string.IsNullOrEmpty(id) || (!Regex.IsMatch(id, @"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}")))
{
//oops
}
else {
//good
}
}
您需要锚定正则表达式,并且不需要在字符类之外转义
-
:
@"^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$"
^
和$
分别匹配字符串的开头和结尾。正如Jonesy所说,为什么不使用Guid.TryParse()
有关更多信息,请参见为什么不直接使用Guid.TryParse()一个有效的ID应该是什么样的-您希望得到什么样的结果。你为什么说这是“错误的”?
string stringGuid = "a485c610-7d49-4877-a4c9-bdaaaad417be";
Guid newGuid;
if (Guid.TryParse(stringGuid, out newGuid))
Console.WriteLine("Converted {0} to a Guid", stringGuid);
else
Console.WriteLine("Unable to convert {0} to a Guid", stringGuid);