如何验证GUID是GUID

本文关键字:GUID 验证 何验证 | 更新日期: 2023-09-27 17:58:08

如何确定字符串是否包含GUID而不是仅包含数字字符串。

GUID是否总是包含至少1个字母字符?

如何验证GUID是GUID

看看这些是否有帮助:-

  1. Guid.Parse-文档
Guid guidResult = Guid.Parse(inputString)
  1. Guid.TryParse-文档
bool isValid = Guid.TryParse(inputString, out guidOutput)

这是一种相当干净、现代的C#方法,可以抑制out变量:

var isValid = Guid.TryParse(inputString, out _);

当我只是测试一个字符串以查看它是否是GUID时,我并不真的想创建一个不需要的GUID对象。所以…

public static class GuidEx
{
    public static bool IsGuid(string value)
    {
        Guid x;
        return Guid.TryParse(value, out x);
    }
}

以下是使用方法:

string testMe = "not a guid";
if (GuidEx.IsGuid(testMe))
{
...
}
GUID是一个16字节(128位)的数字,通常由32个字符的十六进制字符串表示。GUID(十六进制形式)不需要包含任何字母字符,尽管可能会包含。如果您的目标是十六进制形式的GUID,您可以检查字符串是否有32个字符长(去掉短划线和大括号后),并且只有字母a-F和数字。

有某种风格的GUID(破折号放置),正则表达式可以用来检查这一点,例如

@"^('{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}'}{0,1})$"

来自http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm.也就是说,应该强调的是,GUID实际上是一个128位的数字,并且可以用多种不同的方式表示。

不能保证GUID包含alpha字符。CCD_ 3是有效的GUID,CCD_。

如果你使用的是.NET 4.0,你可以使用上面的Guid.Parse和Guid.TryParse的答案。否则,你可以这样做:

public static bool TryParseGuid(string guidString, out Guid guid)
{
    if (guidString == null) throw new ArgumentNullException("guidString");
    try
    {
        guid = new Guid(guidString);
        return true;
    }
    catch (FormatException)
    {
        guid = default(Guid);
        return false;
    }
}
if(MyGuid != Guid.Empty) 
{
   // Valid Guid
} 
else
{
   // Invalid Guid
}

如果是有效的Guid,将返回Guid,否则将返回Guid.Empty

if (!Guid.TryParse(yourGuidString, out yourGuid)){
          yourGuid= Guid.Empty;
}

基于接受的答案,我创建了一个扩展方法,如下所示:

public static Guid ToGuid(this string aString)
{
    Guid newGuid;
    if (string.IsNullOrWhiteSpace(aString))
    {
        return MagicNumbers.defaultGuid;
    }
    if (Guid.TryParse(aString, out newGuid))
    {
        return newGuid;
    }
    return MagicNumbers.defaultGuid;
}

其中"MagicNumbers.defaultGuid"只是"一个空的"全零Guid"00000000-0000-0000-0000-000000000000000"。

在我的情况下,由于ToGuid转换无效而返回该值不是问题。

请参阅http://en.wikipedia.org/wiki/Globally_unique_identifier

不能保证阿尔法真的会在那里。

使用GUID构造函数标准功能

Public Function IsValid(pString As String) As Boolean
    Try
        Dim mGuid As New Guid(pString)
    Catch ex As Exception
        Return False
    End Try
    Return True
End Function