2013-09-18 2 views
-2

Я пытаюсь проверить ID и что я делаю неправильно?Validating Regex match

ниже мой код:

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 
    } 
} 
+6

почему бы вам не просто использовать Guid.TryParse() – Jonesopolis

+3

Что должен предъявить действительное удостоверение личности выглядеть - что делать вы ожидаете, что результат будет. Что заставляет вас говорить, что это «неправильно»? – Floris

ответ

1

Вы должны прикрепить регулярное выражение, и нет никакой необходимости, чтобы избежать - вне класса символов:

@"^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$" 

^ и $ соответствуют началу и конец строки соответственно.

3

Как сказал Джоунси, почему бы не использовать Guid.TryParse()

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); 

Смотрите this link для получения дополнительной информации