一个常用的正则表达验证类

  1. usingSystem;
  2. usingSystem.Collections;
  3. usingSystem.Text.RegularExpressions;
  4. namespaceXrinehart.Framework.Common.Validate
  5. {
  6. /**////<summary>
  7. ///RegularMatch的摘要说明。
  8. ///</summary>
  9. publicclassRegularMatch
  10. {
  11. privatestring_String;
  12. bool_IsEntirety;
  13. ///可以进行判断的类型
  14. enumOperation
  15. Byte,SByte,Int16,Int32,Int64,Single,Double,Boolean,Char,Decimal,DateTime,Date,Time,
  16. EMail,URL,ChinaPhone,ChineseWord,ChinesePostalCode,Number,StringModel_01,StringModel_02,WideWord,NarrowWord,IPAddress,
  17. ChineseMobile,ChineseID
  18. };
  19. publicRegularmatch(){}
  20. 用于判断字符串是否是对应类型(认为包含匹配)#region用于判断字符串是否是对应类型(认为包含匹配)
  21. boolIsAccordType(stringstrVerifyString,Operationop)
  22. returnIsAccordType(strVerifyString,op,false);
  23. }
  24. #endregion
  25. 用于判断字符串是否是对应类型(或是否包含对应类型的字符)#region用于判断字符串是否是对应类型(或是否包含对应类型的字符)
  26. ///用于判断字符串是否是对应类型
  27. ///<paramname="strVerifyString">String,需要判断的字符串</param>
  28. ///<paramname="op">Operation枚举,用于选择需要进行的操作</param>
  29. ///<paramname="IsEntirety">Boolean,判断是完全匹配还是包含匹配模式(仅适用于非类型判断时)</param>
  30. ///<returns></returns>
  31. boolIsEntirety)
  32. _String=strVerifyString;
  33. _IsEntirety=IsEntirety;
  34. switch(op)
  35. caseOperation.Byte:
  36. returnIsByte();
  37. }
  38. caseOperation.SByte:
  39. returnIsSByte();
  40. caseOperation.Int16:
  41. returnIsInt16();
  42. caseOperation.Int32:
  43. returnIsInt32();
  44. caseOperation.Int64:
  45. returnIsInt64();
  46. caseOperation.Single:
  47. returnIsSingle();
  48. caseOperation.Double:
  49. returnIsDouble();
  50. caseOperation.Boolean:
  51. returnIsBoolean();
  52. caseOperation.Char:
  53. returnIsChar();
  54. caseOperation.Decimal:
  55. returnIsDecimal();
  56. caseOperation.DateTime:
  57. returnIsDateTime();
  58. caseOperation.Date:
  59. returnIsDate();
  60. caseOperation.Time:
  61. returnIsTime();
  62. caseOperation.IPAddress:
  63. returnIsIPAddress();
  64. caseOperation.ChinaPhone:
  65. returnIsChinaPhone();
  66. caseOperation.ChinesePostalCode:
  67. returnIsChinesePostalCode();
  68. caseOperation.ChineseMobile:
  69. returnIsChineseMobile();
  70. caseOperation.EMail:
  71. returnIsEmail();
  72. caseOperation.URL:
  73. returnIsURL();
  74. caseOperation.ChineseWord:
  75. returnIsChineseWord();
  76. caseOperation.Number:
  77. returnIsNumber();
  78. caseOperation.StringModel_01:
  79. returnIsstringModel_01();
  80. caseOperation.StringModel_02:
  81. returnIsstringModel_02();
  82. caseOperation.WideWord:
  83. returnIsWideWord();
  84. caseOperation.NarrowWord:
  85. returnIsNarrowWord();
  86. caseOperation.ChineseID:
  87. returnIsChineseID();
  88. default:
  89. returnfalse;
  90. }
  91. }
  92. #endregion
  93. 具体验证方法#region具体验证方法
  94. 是否Byte类型(8位的无符号整数):0和255之间的无符号整数#region是否Byte类型(8位的无符号整数):0和255之间的无符号整数
  95. /**////<summary>
  96. ///是否Byte类型(8位的无符号整数):0和255之间的无符号整数
  97. ///</summary>
  98. ///<returns>Boolean</returns>
  99. protectedboolIsByte()
  100. try
  101. Byte.Parse(_String);
  102. catch
  103. false;
  104. true;
  105. 是否SByte类型(8位的有符号整数):-128到+127之间的整数#region是否SByte类型(8位的有符号整数):-128到+127之间的整数
  106. ///是否SByte类型(8位的有符号整数):-128到+127之间的整数
  107. ///<returns>Boolean</returns>
  108. boolIsSByte()
  109. try
  110. SByte.Parse(_String);
  111. catch
  112. true;
  113. 是否Int16类型(16位的有符号整数):-32768到+32767之间的有符号整数#region是否Int16类型(16位的有符号整数):-32768到+32767之间的有符号整数
  114. ///是否Int16类型(16位的有符号整数):-32768到+32767之间的有符号整数
  115. boolIsInt16()
  116. Int16.Parse(_String);
  117. 是否Int32类型(32位的有符号整数):-2,147,483,648到+2,647之间的有符号整数#region是否Int32类型(32位的有符号整数):-2,647之间的有符号整数
  118. ///是否Int32类型(32位的有符号整数):-2,647之间的有符号整数
  119. boolIsInt32()
  120. Int32.Parse(_String);
  121. 是否Int64类型(64位的有符号整数):-9,223,372,036,854,775,808到+9,807之间的整数#region是否Int64类型(64位的有符号整数):-9,807之间的整数
  122. ///是否Int64类型(64位的有符号整数):-9,807之间的整数
  123. boolIsInt64()
  124. Int64.Parse(_String);
  125. 是否Single类型(单精度(32位)浮点数字):-3.402823e38和+3.402823e38之间的单精度32位数字#region是否Single类型(单精度(32位)浮点数字):-3.402823e38和+3.402823e38之间的单精度32位数字
  126. ///是否Single类型(单精度(32位)浮点数字):-3.402823e38和+3.402823e38之间的单精度32位数字
  127. boolIsSingle()
  128. Single.Parse(_String);
  129. 是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字#region是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字
  130. ///是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字
  131. boolIsDouble()
  132. Double.Parse(_String);
  133. 是否Boolean类型(布尔值):truefalse#region是否Boolean类型(布尔值):false
  134. ///是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字
  135. boolIsBoolean()
  136. Boolean.Parse(_String);
  137. 是否Char类型(Unicode(16位)字符):该16位数字的值范围为从十六进制值0x0000到0xFFFF#region是否Char类型(Unicode(16位)字符):该16位数字的值范围为从十六进制值0x0000到0xFFFF
  138. ///是否Char类型(Unicode(16位)字符):该16位数字的值范围为从十六进制值0x0000到0xFFFF
  139. boolIsChar()
  140. Char.Parse(_String);
  141. 是否Char类型(96位十进制值):从正79,228,162,514,264,337,593,543,950,335到负79,335之间的十进制数#region是否Char类型(96位十进制值):从正79,335之间的十进制数
  142. ///是否Char类型(96位十进制值):从正79,335之间的十进制数
  143. boolIsDecimal()
  144. Decimal.Parse(_String);
  145. 是否DateTime类型(表示时间上的一刻):范围在公元(基督纪元)0001年1月1日午夜12:00:00到公元(C.E.)9999年12月31日晚上11:59:59之间的日期和时间#region是否DateTime类型(表示时间上的一刻):范围在公元(基督纪元)0001年1月1日午夜12:00:00到公元(C.E.)9999年12月31日晚上11:59:59之间的日期和时间
  146. ///是否DateTime类型(表示时间上的一刻):范围在公元(基督纪元)0001年1月1日午夜12:00:00到公元(C.E.)9999年12月31日晚上11:59:59之间的日期和时间
  147. boolIsDateTime()
  148. DateTime.Parse(_String);
  149. 是否Date类型(表示时间的日期部分):范围在公元(基督纪元)0001年1月1日到公元(C.E.)9999年12月31日之间的日期#region是否Date类型(表示时间的日期部分):范围在公元(基督纪元)0001年1月1日到公元(C.E.)9999年12月31日之间的日期
  150. ///是否Date类型(表示时间的日期部分):范围在公元(基督纪元)0001年1月1日到公元(C.E.)9999年12月31日之间的日期
  151. boolIsDate()
  152. DateTimeValue;
  153. Value=DateTime.Parse(_String);
  154. if(Value.Date.ToString()==_String)
  155. else
  156. 是否Time类型(表示时间部分HHMMSS):范围在夜12:00:00到晚上11:59:59之间的时间#region是否Time类型(表示时间部分HHMMSS):范围在夜12:00:00到晚上11:59:59之间的时间
  157. ///是否Time类型(表示时间部分HHMMSS):范围在夜12:00:00到晚上11:59:59之间的时间
  158. boolIsTime()
  159. DateTimeValue;
  160. Value=DateTime.Parse(_String);
  161. if(Value.Year==1&&Value.Month==1&&Value.Day==1)
  162. else
  163. 是否IPAddress类型(IPv4的情况下使用以点分隔的四部分表示法格式表示,IPv6的情况下使用冒号与十六进制格式表示)#region是否IPAddress类型(IPv4的情况下使用以点分隔的四部分表示法格式表示,IPv6的情况下使用冒号与十六进制格式表示)
  164. ///是否IPAddress类型(IPv4的情况下使用以点分隔的四部分表示法格式表示,IPv6的情况下使用冒号与十六进制格式表示)
  165. boolIsIPAddress()
  166. System.Net.IPAddress.Parse(_String);
  167. 是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX(/d{3,4})-?/d{7,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)#region是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX(/d{3,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)
  168. ///是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX(/d{3,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)
  169. boolIsChinaPhone()
  170. ArrayListaryResult=newArrayList();
  171. returnCommRegularMatch(_String,@"(/d{3,8}",RegexOptions.None,153); font-weight:bold; background-color:inherit">refaryResult,_IsEntirety);
  172. 是否中国邮政编码(6位数字/d{6})#region是否中国邮政编码(6位数字/d{6})
  173. ///是否中国邮政编码(6位数字/d{6})
  174. boolIsChinesePostalCode()
  175. "/d{6}",248)"> 是否中国移动电话号码(13开头的总11位数字13/d{9})#region是否中国移动电话号码(13开头的总11位数字13/d{9})
  176. ///是否中国移动电话号码(13开头的总11位数字13/d{9})
  177. boolIsChineseMobile()
  178. "13/d{9}",248)"> 是否EMail类型(XXX@XXX.XXX/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)#region是否EMail类型(XXX@XXX.XXX/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)
  179. ///是否EMail类型(XXX@XXX.XXX/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)
  180. boolIsEmail()
  181. "/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*",248)"> 是否InternetURL地址类型(http://)#region是否InternetURL地址类型(http://)
  182. ///是否InternetURL地址类型(http://)
  183. boolIsURL()
  184. "http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)?",248)"> 是否中文字符([/u4e00-/u9fa5])#region是否中文字符([/u4e00-/u9fa5])
  185. ///是否中文字符([/u4e00-/u9fa5])
  186. boolIsChineseWord()
  187. "[/u4e00-/u9fa5]",248)"> 是否是数字(0到9的数字[/d]+):不包括符号".""-"#region是否是数字(0到9的数字[/d]+):不包括符号".""-"
  188. ///是否是数字(0到9的数字[/d]+):不包括符号"."和"-"
  189. boolIsNumber()
  190. "[/d]+",248)"> 是否只包含数字,英文和下划线([/w]+)#region是否只包含数字,英文和下划线([/w]+)
  191. ///是否只包含数字,英文和下划线([/w]+)
  192. boolIsstringModel_01()
  193. "[/w]+",248)"> 是否大写首字母的英文字母([A-Z][a-z]+)#region是否大写首字母的英文字母([A-Z][a-z]+)
  194. ///是否大写首字母的英文字母([A-Z][a-z]+)
  195. boolIsstringModel_02()
  196. "[A-Z][a-z]+",248)"> 是否全角字符([^/x00-/xff]):包括汉字在内#region是否全角字符([^/x00-/xff]):包括汉字在内
  197. ///是否全角字符([^/x00-/xff]):包括汉字在内
  198. boolIsWideWord()
  199. "[^/x00-/xff]",248)"> 是否半角字符([/x00-/xff])#region是否半角字符([/x00-/xff])
  200. ///是否半角字符([^/x00-/xff]):包括汉字在内
  201. boolIsNarrowWord()
  202. "[/x00-/xff]",248)"> 是否合法的中国身份证号码#region是否合法的中国身份证号码
  203. boolIsChineseID()
  204. if(_String.Length==15)
  205. _String=CidUpdate(_String);
  206. if(_String.Length==18)
  207. stringstrResult=CheckCidInfo(_String);
  208. if(strResult=="非法地区"||strResult=="非法生日"||strResult=="非法证号")
  209. #endregion
  210. 通用正则表达式判断函数#region通用正则表达式判断函数
  211. ///通用正则表达式判断函数
  212. ///<paramname="strVerifyString">String,用于匹配的字符串</param>
  213. ///<paramname="strRegular">String,正则表达式</param>
  214. ///<paramname="regOption">RegexOptions,配置正则表达式的选项</param>
  215. ///<paramname="aryResult">ArrayList,分解的字符串内容</param>
  216. ///<paramname="IsEntirety">Boolean,是否需要完全匹配</param>
  217. ///<returns></returns>
  218. boolCommRegularMatch(stringstrRegular,System.Text.RegularExpressions.RegexOptionsregOption,153); font-weight:bold; background-color:inherit">refSystem.Collections.ArrayListaryResult,153); font-weight:bold; background-color:inherit">boolIsEntirety)
  219. System.Text.RegularExpressions.Regexr;
  220. System.Text.RegularExpressions.Matchm;
  221. 如果需要完全匹配的处理#region如果需要完全匹配的处理
  222. if(IsEntirety)
  223. strRegular=strRegular.Insert(0,@"/A");
  224. strRegular=strRegular.Insert(strRegular.Length,@"/z");
  225. r=newSystem.Text.RegularExpressions.Regex(strRegular,regOption);
  226. catch(System.Exceptione)
  227. throw(e);
  228. for(m=r.Match(strVerifyString);m.Success;m=m.Nextmatch())
  229. aryResult.Add(m);
  230. if(aryResult.Count==0)
  231. 中国身份证号码验证#region中国身份证号码验证
  232. stringCheckCidInfo(stringcid)
  233. string[]aCity=newstring[]{null,"北京","天津","河北","山西","内蒙古","辽宁","吉林","黑龙江","上海","江苏","浙江","安微","福建","江西","山东","河南","湖北","湖南","广东","广西","海南","重庆","四川","贵州","云南","西藏","陕西","甘肃","青海","宁夏","新疆","台湾","香港","澳门","国外"};
  234. doubleiSum=0;
  235. stringinfo=string.Empty;
  236. System.Text.RegularExpressions.Regexrg=newSystem.Text.RegularExpressions.Regex(@"^/d{17}(/d|x)$");
  237. System.Text.RegularExpressions.Matchmc=rg.Match(cid);
  238. if(!mc.Success)
  239. string.Empty;
  240. cid=cid.ToLower();
  241. cid=cid.Replace("x","a");
  242. if(aCity[int.Parse(cid.Substring(0,2))]==null)
  243. return"非法地区";
  244. DateTime.Parse(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2));
  245. return"非法生日";
  246. for(inti=17;i>=0;i--)
  247. iSum+=(System.Math.Pow(2,i)%11)*int.Parse(cid[17-i].ToString(),System.Globalization.NumberStyles.Hexnumber);
  248. if(iSum%11!=1)
  249. return("非法证号");
  250. return(aCity[","+cid.Substring(6,2)+","+(int.Parse(cid.Substring(16,1))%2==1?"男":"女"));
  251. 身份证号码15升级为18位#region身份证号码15升级为18位
  252. stringCidUpdate(stringShortCid)
  253. char[]strJiaoYan={'1','0','X','9','8','7','6','5','4','3','2'};
  254. int[]intQuan={7,9,10,5,8,4,2,1,6,3,7,1};
  255. stringstrTemp;
  256. intintTemp=0;
  257. strTemp=ShortCid.Substring(0,6)+"19"+ShortCid.Substring(6);
  258. inti=0;i<=strTemp.Length-1;i++)
  259. intTemp+=int.Parse(strTemp.Substring(i,1))*intQuan[i];
  260. intTemp=intTemp%11;
  261. returnstrTemp+strJiaoYan[intTemp];
  262. }

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...