DataMaskHelper.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System.Text.RegularExpressions;
  2. namespace ZhonTai.Common.Helpers;
  3. /// <summary>
  4. /// 数据脱敏
  5. /// </summary>
  6. public partial class DataMaskHelper
  7. {
  8. [GeneratedRegex("(\\d{3})\\d{4}(\\d{4})")]
  9. public static partial Regex PhoneMaskRegex();
  10. [GeneratedRegex("(?<=.{2})[^@]+(?=.{2}@)")]
  11. public static partial Regex EmailMaskRegex();
  12. [GeneratedRegex("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})")]
  13. public static partial Regex IPMaskRegex();
  14. /// <summary>
  15. /// 手机号脱敏
  16. /// </summary>
  17. /// <param name="input"></param>
  18. /// <param name="mask"></param>
  19. /// <returns></returns>
  20. public static string PhoneMask(string input, string mask = "****")
  21. {
  22. if (input.IsNull()) {
  23. return input;
  24. }
  25. return PhoneMaskRegex().Replace(input, $"$1{mask}$2");
  26. }
  27. /// <summary>
  28. /// 邮箱脱敏
  29. /// </summary>
  30. /// <param name="input"></param>
  31. /// <param name="mask"></param>
  32. /// <returns></returns>
  33. public static string EmailMask(string input, string mask = "****")
  34. {
  35. if (input.IsNull())
  36. {
  37. return input;
  38. }
  39. return EmailMaskRegex().Replace(input, mask);
  40. }
  41. /// <summary>
  42. /// IP脱敏
  43. /// </summary>
  44. /// <param name="input"></param>
  45. /// <param name="mask"></param>
  46. /// <returns></returns>
  47. public static string IPMask(string input, string mask = "*")
  48. {
  49. if (input.IsNull())
  50. {
  51. return input;
  52. }
  53. return IPMaskRegex().Replace(input, $"$1.{mask}.{mask}.$4");
  54. }
  55. }