/src/Shared/HandyControl_Shared/Tools/RegexPatterns.cs

https://github.com/ghost1372/HandyControls · C# · 165 lines · 61 code · 24 blank · 80 comment · 0 complexity · f12a27e3a36f7a2c6960fa969b58f161 MD5 · raw file

  1. namespace HandyControl.Tools
  2. {
  3. /// <summary>
  4. /// 包含一些正则验证所需要的字符串
  5. /// </summary>
  6. public sealed class RegexPatterns
  7. {
  8. /// <summary>
  9. /// 邮件正则匹配表达式
  10. /// </summary>
  11. public const string MailPattern =
  12. @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
  13. /// <summary>
  14. /// 手机号正则匹配表达式
  15. /// </summary>
  16. public const string PhonePattern = @"^((13[0-9])|(15[^4,\d])|(18[0,5-9]))\d{8}$";
  17. /// <summary>
  18. /// IP正则匹配
  19. /// </summary>
  20. public const string IpPattern =
  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. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  25. /// <summary>
  26. /// A类IP正则匹配
  27. /// </summary>
  28. public const string IpAPattern =
  29. @"^(12[0-6]|1[0-1]\d|[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. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  33. /// <summary>
  34. /// B类IP正则匹配
  35. /// </summary>
  36. public const string IpBPattern =
  37. @"^(19[0-1]|12[8-9]|1[3-8]\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. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  41. /// <summary>
  42. /// C类IP正则匹配
  43. /// </summary>
  44. public const string IpCPattern =
  45. @"^(19[2-9]|22[0-3]|2[0-1]\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. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  49. /// <summary>
  50. /// D类IP正则匹配
  51. /// </summary>
  52. public const string IpDPattern =
  53. @"^(22[4-9]|23\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. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  57. /// <summary>
  58. /// E类IP正则匹配
  59. /// </summary>
  60. public const string IpEPattern =
  61. @"^(25[0-5]|24\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. + @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
  65. /// <summary>
  66. /// 汉字正则匹配
  67. /// </summary>
  68. public const string ChinesePattern = @"^[\u4e00-\u9fa5]$";
  69. /// <summary>
  70. /// Url正则匹配
  71. /// </summary>
  72. public const string UrlPattern =
  73. @"((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\&%_\./-~-]*)?";
  74. /// <summary>
  75. /// 数字正则匹配
  76. /// </summary>
  77. public const string NumberPattern = @"^\d$";
  78. /// <summary>
  79. /// 计算性质数字正则匹配
  80. /// </summary>
  81. public const string DigitsPattern = @"[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?";
  82. /// <summary>
  83. /// 正整数正则匹配
  84. /// </summary>
  85. public const string PIntPattern = @"^[1-9]\d*$";
  86. /// <summary>
  87. /// 负整数正则匹配
  88. /// </summary>
  89. public const string NIntPattern = @"^-[1-9]\d*$ ";
  90. /// <summary>
  91. /// 整数正则匹配
  92. /// </summary>
  93. public const string IntPattern = @"^-?[1-9]\d*$";
  94. /// <summary>
  95. /// 非负整数正则匹配
  96. /// </summary>
  97. public const string NnIntPattern = @"^[1-9]\d*|0$";
  98. /// <summary>
  99. /// 非正整数正则匹配
  100. /// </summary>
  101. public const string NpIntPattern = @"^-[1-9]\d*|0$";
  102. /// <summary>
  103. /// 正浮点数正则匹配
  104. /// </summary>
  105. public const string PDoublePattern = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$";
  106. /// <summary>
  107. /// 负浮点数正则匹配
  108. /// </summary>
  109. public const string NDoublePattern = @"^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$";
  110. /// <summary>
  111. /// 浮点数正则匹配
  112. /// </summary>
  113. public const string DoublePattern = @"^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$";
  114. /// <summary>
  115. /// 非负浮点数正则匹配
  116. /// </summary>
  117. public const string NnDoublePattern = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$";
  118. /// <summary>
  119. /// 非正浮点数正则匹配
  120. /// </summary>
  121. public const string NpDoublePattern = @"^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$";
  122. /// <summary>
  123. /// شناسایی حروف فارسی
  124. /// </summary>
  125. public const string PersianPattern = @"^([\u0600-\u0605 ؐ-ؚ\u061Cـ ۖ-\u06DD ۟-ۤ ۧ ۨ ۪-ۭ ً-ٕ ٟ ٖ-ٞ ٰ ، ؍ ٫ ٬ ؛ ؞ ؟ ۔ ٭ ٪ ؉ ؊ ؈ ؎ ؏
  126. ۞ ۩ ؆ ؇ ؋ 0 1 2 3 4 5 6 7 8 9 ٠ ۰ ١ ۱ ٢ ۲ ٣ ۳ ٤ ۴ ٥ ۵ ٦ ۶ ٧ ۷ ٨ ۸ ٩ ۹ ءٴ۽ آ أ ٲ ٱ ؤ إ ٳ ئ ا ٵ ٮ ب ٻ پ ڀ
  127. ة-ث ٹ ٺ ټ ٽ ٿ ج ڃ ڄ چ ڿ ڇ ح خ ځ ڂ څ د ذ ڈ-ڐ ۮ ر ز ڑ-ڙ ۯ س ش ښ-ڜ ۺ ص ض ڝ ڞ
  128. ۻ ط ظ ڟ ع غ ڠ ۼ ف ڡ-ڦ ٯ ق ڧ ڨ ك ک-ڴ ػ ؼ ل ڵ-ڸ م۾ ن ں-ڽ ڹ ه ھ ہ-ۃ ۿ ەۀ وۥ ٶ
  129. ۄ-ۇ ٷ ۈ-ۋ ۏ ى يۦ ٸ ی-ێ ې ۑ ؽ-ؿ ؠ ے ۓ \u061D])+$";
  130. /// <summary>
  131. /// شناسایی کد ملی
  132. /// </summary>
  133. public const string IranNationalCodePattern = @"^(?!(\d)\1{9})\d{10}$";
  134. /// <summary>
  135. /// 根据属性名称使用反射来获取值
  136. /// </summary>
  137. /// <param name="propertyName"></param>
  138. /// <returns></returns>
  139. public object GetValue(string propertyName) => GetType().GetField(propertyName).GetValue(null);
  140. }
  141. }