C#中验证GUID的方法有:
- “基于字符数组”的检测方法(较快)
- Guid内置的TryParse方法(较快)
- 异常捕获(GUID正确时较快、错误时最慢)
- 正则表达式方法[编译和不编译](较慢)
这里的正则表达式验证主要用于DTO模型验证
public static class Constants
{
/// <summary>
/// 字符 -十六进制
/// </summary>
public const string HEX_REG = @"[0-9a-fA-F]";
/// <summary>
/// GUID -正则表达式 -单行匹配
/// </summary>
public const string GUID_REG = "^("+HEX_REG+"{8}(-"+ HEX_REG + "{4}){3}-"+ HEX_REG + "{12})?$";
/// <summary>
/// 测试
/// </summary>
public static void Test()
{
var guid = Guid.NewGuid().ToString();
var isMath = System.Text.RegularExpressions.Regex.IsMatch(guid, Constants.GUID_REG);
Console.WriteLine($"{guid} is{isMath ? "" : " not"} a GUID.");
}
}
/// <summary>
/// 角色实体
/// </summary>
public class RoleCreateRequest
{
/// <summary>
/// 角色GUID
/// </summary>
//[MaxLength(36)]
[StringLength(36, MinimumLength =36)]
[RegularExpression(Constants.GUID_REG, ErrorMessage =Constants.GUID_ERR)]
public string Id { get; set; }
/// <summary>
/// 角色名称
/// </summary>
//[MaxLength(15)]
[StringLength(15, MinimumLength = 2)]
[RegularExpression(Constants.VISIBLE_REG, ErrorMessage =Constants.VISIBLE_ERR)]
public string Name { get; set; }
/// <summary>
/// 角色描述
/// </summary>
[MaxLength(255)]
public string Decription { get; set; }
}