RegexPatterns.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. namespace HandyControl.Tools;
  2. /// <summary>
  3. /// 包含一些正则验证所需要的字符串
  4. /// </summary>
  5. public sealed class RegexPatterns
  6. {
  7. /// <summary>
  8. /// 邮件正则匹配表达式
  9. /// </summary>
  10. public const string MailPattern =
  11. @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
  12. /// <summary>
  13. /// 手机号正则匹配表达式
  14. /// </summary>
  15. public const string PhonePattern = @"^((13[0-9])|(15[^4,\d])|(18[0,5-9]))\d{8}$";
  16. /// <summary>
  17. /// IP正则匹配
  18. /// </summary>
  19. public const string IpPattern =
  20. @"^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  21. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  22. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  23. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  24. /// <summary>
  25. /// A类IP正则匹配
  26. /// </summary>
  27. public const string IpAPattern =
  28. @"^(12[0-6]|1[0-1]\d|[1-9]?\d)\."
  29. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  30. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  31. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  32. /// <summary>
  33. /// B类IP正则匹配
  34. /// </summary>
  35. public const string IpBPattern =
  36. @"^(19[0-1]|12[8-9]|1[3-8]\d)\."
  37. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  38. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  39. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  40. /// <summary>
  41. /// C类IP正则匹配
  42. /// </summary>
  43. public const string IpCPattern =
  44. @"^(19[2-9]|22[0-3]|2[0-1]\d)\."
  45. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  46. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  47. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  48. /// <summary>
  49. /// D类IP正则匹配
  50. /// </summary>
  51. public const string IpDPattern =
  52. @"^(22[4-9]|23\d)\."
  53. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  54. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  55. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  56. /// <summary>
  57. /// E类IP正则匹配
  58. /// </summary>
  59. public const string IpEPattern =
  60. @"^(25[0-5]|24\d)\."
  61. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  62. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
  63. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  64. /// <summary>
  65. /// 汉字正则匹配
  66. /// </summary>
  67. public const string ChinesePattern = @"^[\u4e00-\u9fa5]$";
  68. /// <summary>
  69. /// Url正则匹配
  70. /// </summary>
  71. public const string UrlPattern =
  72. @"((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?";
  73. /// <summary>
  74. /// 数字正则匹配
  75. /// </summary>
  76. public const string NumberPattern = @"^\d+$";
  77. /// <summary>
  78. /// 计算性质数字正则匹配
  79. /// </summary>
  80. public const string DigitsPattern = @"[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?";
  81. /// <summary>
  82. /// 正整数正则匹配
  83. /// </summary>
  84. public const string PIntPattern = @"^[1-9]\d*$";
  85. /// <summary>
  86. /// 负整数正则匹配
  87. /// </summary>
  88. public const string NIntPattern = @"^-[1-9]\d*$";
  89. /// <summary>
  90. /// 整数正则匹配
  91. /// </summary>
  92. public const string IntPattern = @"^-?[1-9]\d*|0$";
  93. /// <summary>
  94. /// 非负整数正则匹配
  95. /// </summary>
  96. public const string NnIntPattern = @"^[1-9]\d*|0$";
  97. /// <summary>
  98. /// 非正整数正则匹配
  99. /// </summary>
  100. public const string NpIntPattern = @"^-[1-9]\d*|0$";
  101. /// <summary>
  102. /// 正浮点数正则匹配
  103. /// </summary>
  104. public const string PDoublePattern = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$";
  105. /// <summary>
  106. /// 负浮点数正则匹配
  107. /// </summary>
  108. public const string NDoublePattern = @"^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$";
  109. /// <summary>
  110. /// 浮点数正则匹配
  111. /// </summary>
  112. public const string DoublePattern = @"^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$";
  113. /// <summary>
  114. /// 非负浮点数正则匹配
  115. /// </summary>
  116. public const string NnDoublePattern = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$";
  117. /// <summary>
  118. /// 非正浮点数正则匹配
  119. /// </summary>
  120. public const string NpDoublePattern = @"^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$";
  121. /// <summary>
  122. /// 根据属性名称使用反射来获取值
  123. /// </summary>
  124. /// <param name="propertyName"></param>
  125. /// <returns></returns>
  126. public object GetValue(string propertyName) => GetType().GetField(propertyName).GetValue(null);
  127. }