0.写在前面
记得上一次正儿八经的用正则表达式照样三年前,虽然时期也零零散散的用过一些,然则基础已忘的差不多了,所以这篇博客中假如有什么不对的处所迎接和谢谢人人斧正!这里我只是写出了一些个人事情中常用到的正则婚配,假如同时有园友情愿孝敬一份气力介入到正则开源东西的编码中,我会异常迎接。
近来园子里的"月经贴"愈来愈多,我就很疑惑,这群人是不是是闲的蛋疼?你有时间在这"指点江山"指摘这个言语反攻谁人环境的,你还不如张开双手拥抱.net开源大潮呢。跟着.net开源的到来,.net的春季也来了,我们应当伸出双手为.net开源做一些事变,让.net社区愈来愈开源。固然这是题外话,那些月经贴也不关我啥事。
v1.源码地点
https://github.com/toutouge/TouTou.RegexTool回到顶部
v2.正文最先
2.1.: 通用婚配
C#通用婚配划定规矩,能够在挪用的时刻传入源字符串和对应的正则
/// <summary> /// 检测字符串中是不是包括相符正则的子集 /// </summary> /// <param name="source">源字符串</param> /// <param name="reg">正则, e.g. \d+</param> /// <returns>true:包括,反之不包括</returns> publicbool CheckContainsByReg(string source, string reg) { returnRegex.Match(source, reg).Success; } /// <summary> /// 检测全部字符串是不是能婚配正则,而不是包括 /// </summary> /// <param name="source">源字符串</param> /// <param name="reg">正则, e.g. ^\d+$</param> /// <returns>true:婚配,反之不婚配</returns> publicbool CheckStringByReg(string source, string reg) { Regex rg = newRegex(reg, RegexOptions.IgnoreCase); return rg.IsMatch(source); } /// <summary> /// 从指定字符串中过滤出第一个相符正则婚配的子集 /// </summary> /// <param name="source">源字符串</param> /// <param name="reg">正则, e.g. \d+</param> /// <returns>源字符串的第一个婚配的子集</returns> publicstring GetFirstStringByReg(string source, string reg) { returnRegex.Match(source, reg).Groups[0].Value; } /// <summary> /// 从指定字符串中过滤出一切相符正则婚配的子集 /// </summary> /// <param name="source">源字符串</param> /// <param name="reg">正则, e.g. \d+</param> /// <returns>true:婚配,反之不婚配</returns> publicList<string> GetStringByReg(string source, string reg) { var regex = Regex.Matches(source, reg); List<string> list =newList<string>(); foreach (Match item in regex) { list.Add(item.Value); } return list; }
2.2.: 数字婚配
C#正则表达式依据种种需求婚配数字
/// <summary> /// 从指定字符串中过滤出第一个数字 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串的第一个数字</returns> publicstring GetFirstNumberByString(string source) { returnRegex. Match(source, @"\d+").Groups[0].Value; } /// <summary> /// 从指定字符串中过滤出末了一个数字 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串的末了一个数字</returns> publicstring GetLastNumberByString(string source) { var reg = Regex.Matches(source, @"\d+"); return reg[reg.Count -1].Value; } /// <summary> /// 从指定字符串中过滤出一切数字 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串的一切数字</returns> publicList<string> GetAllNumberByString( string source) { var reg = Regex.Matches(source, @"\d+"); List<string> list =newList<string>(); foreach (Match item in reg) { list.Add(item.Value); } return list; } /// <summary> /// 检车源字符串中是不是包括数字 /// </summary> /// <param name="source">源字符串</param> /// <returns>true:源字符串包括数字;false:源字符串不包括数字</returns> publicbool CheckNumberByString(string source) { returnRegex. Match(source, @"\d").Success; } /// <summary> /// 推断字符串是不是全部是数字且长度即是指定长度 /// </summary> /// <param name="source">源字符串</param> /// <param name="length">指定长度</param> /// <returns>返回值</returns> publicbool CheckLengthByString(string source, int length) { Regex rg = newRegex(@"^\d{" + length +"}$"); return rg.IsMatch(source); }
2.3.: 正则截串
C#依据给定的肇端字符截取肇端之间的字符串
/// <summary> /// 截取字符串中最先和完毕字符串中心的字符串 /// </summary> /// <param name="source">源字符串</param> /// <param name="startStr">最先字符串</param> /// <param name="endStr">完毕字符串</param> /// <returns>中心字符串</returns> publicstring Substring(string source, string startStr, string endStr) { Regex rg = newRegex("(?<=(" + startStr +"))[.\\s\\S]*?(?=(" + endStr +"))", RegexOptions.Multiline |RegexOptions.Singleline); return rg.Match(source).Value; }
2.4.: 邮箱婚配
C#正则表达式婚配邮箱
/// <summary> /// 婚配邮箱是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>婚配效果true是邮箱反之不是邮箱</returns> publicbool CheckEmailByString(string source) { Regex rg = newRegex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$", RegexOptions.IgnoreCase); return rg.IsMatch(source); }
2.5.: URL婚配
C#正则表达式婚配URL
/// <summary> /// 婚配URL是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>婚配效果true是URL反之不是URL</returns> publicbool CheckURLByString(string source) { Regex rg = newRegex(@"^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)? (((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\. (\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])* ([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~| [\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])| (%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)? (\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~| [\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$" , RegexOptions.IgnoreCase); return rg.IsMatch(source); }
2.6.: 日期婚配
C#正则表达式婚配日期
/// <summary> /// 婚配日期是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>婚配效果true是日期反之不是日期</returns> publicbool CheckDateByString(string source) { Regex rg = newRegex(@"^(\d{4}[\/\-](0?[1-9]|1[0-2])[\/\-]((0?[1-9])|((1|2)[0-9])|30|31))|((0?[1-9]|1[0-2])[\/\-]((0?[1-9])| ((1|2)[0-9])|30|31)[\/\-]\d{4})$"); return rg.IsMatch(source); } /// <summary> /// 从字符串中猎取第一个日期 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串中的第一个日期</returns> publicstring GetFirstDateByString(string source) { returnRegex.Match(source,@"(\d{4}[\/\-](0?[1-9]|1[0-2])[\/\-]((0?[1-9])|((1|2)[0-9])|30|31))|((0?[1-9]|1[0-2])[\/\-]((0?[1-9])| ((1|2)[0-9])|30|31)[\/\-]\d{4})").Groups[0].Value; } /// <summary> /// 从字符串中猎取一切的日期 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串中的一切日期</returns> publicList<string> GetAllDateByString( string source) { var all = Regex.Matches(source, @"(\d{4}[\/\-](0?[1-9]|1[0-2])[\/\-]((0?[1-9])|((1|2)[0-9])|30|31))|((0?[1-9]|1[0-2]) [\/\-]((0?[1-9])|((1|2)[0-9])|30|31)[\/\-]\d{4})"); List<string> list =newList<string>(); foreach (Match item in all) { list.Add(item.Value); } return list; }
2.7.: 暗码婚配
C#正则表达式婚配暗码
/// <summary> /// 检测暗码复杂度是不是达标:暗码中必需包括字母、数字、特称字符,最少8个字符,最多16个字符。 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>暗码复杂度是不是达标true是达标反之不达标</returns> publicbool CheckPasswordByString(string source) { Regex rg = newRegex(@"^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,16}$"); return rg.IsMatch(source); }
2.8.: 邮编婚配
C#正则表达式婚配邮编
/// <summary> /// 婚配邮编是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>邮编正当返回true,反之不正当</returns> publicbool CheckPostcodeByString(string source) { Regex rg = newRegex(@"^\d{6}$"); return rg.IsMatch(source); }
2.9.: 电话号码
C#正则表达式婚配电话
/// <summary> /// 婚配电话号码是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>电话号码正当返回true,反之不正当</returns> publicbool CheckTelephoneByString(string source) { Regex rg = newRegex(@"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"); return rg.IsMatch(source); } /// <summary> /// 从字符串中猎取电话号码 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串中电话号码</returns> publicstring GetTelephoneByString(string source) { returnRegex. Match(source, @"(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}").Groups[0].Value; }
2.10.: 手机号码
C#正则表达式婚配手机号码
/// <summary> /// 婚配手机号码是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>手机号码正当返回true,反之不正当</returns> publicbool CheckMobilephoneByString(string source) { Regex rg = newRegex(@"^[1]+[3,5,7]+\d{9}$"); return rg.IsMatch(source); } /// <summary> /// 从字符串中猎取手机号码 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串中手机号码</returns> publicstring GetMobilephoneByString(string source) { returnRegex. Match(source, @"[1]+[3,5,7]+\d{9}").Groups[0].Value; }
2.11.: 身份证婚配
C#正则表达式婚配身份证号码
/// <summary> /// 婚配身份证号码是不是正当 /// </summary> /// <param name="source">待婚配字符串</param> /// <returns>身份证号码正当返回true,反之不正当</returns> publicbool CheckIDCardByString(string source) { Regex rg = newRegex(@"^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$"); return rg.IsMatch(source); } /// <summary> /// 从字符串中猎取身份证号码 /// </summary> /// <param name="source">源字符串</param> /// <returns>源字符串中身份证号码</returns> publicstring GetIDCardByString(string source) { returnRegex. Match(source, @"(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))").Groups[0].Value; }
v3.博客总结
关于C#正则表达式开源东西临时就只积累了这么多。由于现在现实事情中碰到的也就这些,关于这个C#正则表达式开源东西如今只是一个雏形,先把这一分不分享出来,后续得会延续更新C#正则表达式开源东西。愿望在今后这个C#正则表达式东西会愈来愈strong,更愿望能获得园友们的support.
以上就是C#正则表达式开源东西的内容,更多相关内容请关注ki4网(www.ki4.cn)!