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

前端之家收集整理的这篇文章主要介绍了一个常用的正则表达验证类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  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. }

猜你在找的正则表达式相关文章