namespace HandyControl.Tools;
///
/// 包含一些正则验证所需要的字符串
///
public sealed class RegexPatterns
{
///
/// 邮件正则匹配表达式
///
public const string MailPattern =
@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
///
/// 手机号正则匹配表达式
///
public const string PhonePattern = @"^((13[0-9])|(15[^4,\d])|(18[0,5-9]))\d{8}$";
///
/// IP正则匹配
///
public const string IpPattern =
@"^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
///
/// A类IP正则匹配
///
public const string IpAPattern =
@"^(12[0-6]|1[0-1]\d|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
///
/// B类IP正则匹配
///
public const string IpBPattern =
@"^(19[0-1]|12[8-9]|1[3-8]\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
///
/// C类IP正则匹配
///
public const string IpCPattern =
@"^(19[2-9]|22[0-3]|2[0-1]\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
///
/// D类IP正则匹配
///
public const string IpDPattern =
@"^(22[4-9]|23\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
///
/// E类IP正则匹配
///
public const string IpEPattern =
@"^(25[0-5]|24\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\."
+ @"(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$";
///
/// 汉字正则匹配
///
public const string ChinesePattern = @"^[\u4e00-\u9fa5]$";
///
/// Url正则匹配
///
public const string UrlPattern =
@"((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\&%_\./-~-]*)?";
///
/// 数字正则匹配
///
public const string NumberPattern = @"^\d+$";
///
/// 计算性质数字正则匹配
///
public const string DigitsPattern = @"[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?";
///
/// 正整数正则匹配
///
public const string PIntPattern = @"^[1-9]\d*$";
///
/// 负整数正则匹配
///
public const string NIntPattern = @"^-[1-9]\d*$";
///
/// 整数正则匹配
///
public const string IntPattern = @"^-?[1-9]\d*|0$";
///
/// 非负整数正则匹配
///
public const string NnIntPattern = @"^[1-9]\d*|0$";
///
/// 非正整数正则匹配
///
public const string NpIntPattern = @"^-[1-9]\d*|0$";
///
/// 正浮点数正则匹配
///
public const string PDoublePattern = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$";
///
/// 负浮点数正则匹配
///
public const string NDoublePattern = @"^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$";
///
/// 浮点数正则匹配
///
public const string DoublePattern = @"^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$";
///
/// 非负浮点数正则匹配
///
public const string NnDoublePattern = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$";
///
/// 非正浮点数正则匹配
///
public const string NpDoublePattern = @"^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$";
///
/// 根据属性名称使用反射来获取值
///
///
///
public object GetValue(string propertyName) => GetType().GetField(propertyName).GetValue(null);
}