匹配 GUID(全局唯一标识符)的正则表达式可以根据 GUID 的标准格式来构建。GUID 通常是一个由 32 个十六进制数字组成的字符串,分为五组,用连字符 -
分隔。这五组的长度分别为:8-4-4-4-12。以下是几种常见格式的正则表达式示例:
标准格式 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Regex
深色版本
^[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}$
允许大写和小写字母
上述正则表达式已经允许大写和小写的十六进制字母。如果你希望明确地指定忽略大小写,可以在使用时添加 RegexOptions.IgnoreCase
选项。
包含花括号的 GUID (例如: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx})
Regex
深色版本
^\{[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}\}$
包含括号的 GUID (例如: (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx))
Regex
深色版本
^$[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}$$
无分隔符的 GUID (例如: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
Regex
深色版本
^[0-9a-fA-F]{32}$
C# 示例代码
以下是一些在 C# 中使用正则表达式匹配 GUID 的示例代码:
匹配标准格式的 GUID
Csharp
深色版本
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string guidPattern = @"^[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}$";
string inputGuid = "550e8400-e29b-41d4-a716-446655440000";
if (Regex.IsMatch(inputGuid, guidPattern))
{
Console.WriteLine("The input is a valid GUID.");
}
else
{
Console.WriteLine("The input is not a valid GUID.");
}
}
}
匹配包含花括号的 GUID
Csharp
深色版本
string guidPatternWithBraces = @"^\{[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}\}$";
string inputGuidWithBraces = "{550e8400-e29b-41d4-a716-446655440000}";
if (Regex.IsMatch(inputGuidWithBraces, guidPatternWithBraces))
{
Console.WriteLine("The input with braces is a valid GUID.");
}
else
{
Console.WriteLine("The input with braces is not a valid GUID.");
}
忽略大小写进行匹配
Csharp
深色版本
string guidPatternIgnoreCase = @"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
string inputGuidMixedCase = "550E8400-E29B-41D4-A716-446655440000";
if (Regex.IsMatch(inputGuidMixedCase, guidPatternIgnoreCase, RegexOptions.IgnoreCase))
{
Console.WriteLine("The mixed case input is a valid GUID.");
}
else
{
Console.WriteLine("The mixed case input is not a valid GUID.");
}
注意事项
-
性能:如果需要频繁匹配 GUID,请考虑将正则表达式编译成静态字段以提高性能。
Csharp深色版本
private static readonly Regex GuidRegex = new Regex( @"^[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}$", RegexOptions.Compiled);
-
验证 GUID 版本:上述正则表达式仅验证 GUID 的格式,而不检查其版本或变体。如果你需要更严格的验证,可以参考 RFC 4122 规范并扩展正则表达式或使用其他方法。