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

这是

風語·深蓝

很早以前写的一个正则表达式验证工具类,包含了一些常见的校验和支持自定义的正则表达式匹配,可以选择完全匹配,也可以获取所有匹配项。曾用它仿造Eclispe下的正则表达式插件写过一个工具。因为最近突然有几个朋友都在问这方面的问题,干脆就把代码贴出来好了。
  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. privatebool_IsEntirety;
  13. /**////<summary>
  14. ///可以进行判断的类型
  15. ///</summary>
  16. publicenumOperation
  17. {
  18. Byte,SByte,Int16,Int32,Int64,Single,Double,Boolean,Char,Decimal,DateTime,Date,Time,
  19. EMail,URL,ChinaPhone,ChineseWord,ChinesePostalCode,Number,StringModel_01,StringModel_02,WideWord,NarrowWord,IPAddress,
  20. ChineseMobile,ChineseID
  21. };
  22. publicRegularMatch(){}
  23. 用于判断字符串是否是对应类型(默认为包含匹配)#region用于判断字符串是否是对应类型(默认为包含匹配)
  24. publicboolIsAccordType(stringstrVerifyString,Operationop)
  25. {
  26. returnIsAccordType(strVerifyString,op,false);
  27. }
  28. #endregion
  29. 用于判断字符串是否是对应类型(或是否包含对应类型的字符)#region用于判断字符串是否是对应类型(或是否包含对应类型的字符)
  30. /**////<summary>
  31. ///用于判断字符串是否是对应类型
  32. ///</summary>
  33. ///<paramname="strVerifyString">String,需要判断的字符串</param>
  34. ///<paramname="op">Operation枚举,用于选择需要进行的操作</param>
  35. ///<paramname="IsEntirety">Boolean,判断是完全匹配还是包含匹配模式(仅适用于非类型判断时)</param>
  36. ///<returns></returns>
  37. publicboolIsAccordType(stringstrVerifyString,Operationop,boolIsEntirety)
  38. {
  39. _String=strVerifyString;
  40. _IsEntirety=IsEntirety;
  41. switch(op)
  42. {
  43. caseOperation.Byte:
  44. {
  45. returnIsByte();
  46. }
  47. caseOperation.SByte:
  48. {
  49. returnIsSByte();
  50. }
  51. caseOperation.Int16:
  52. {
  53. returnIsInt16();
  54. }
  55. caseOperation.Int32:
  56. {
  57. returnIsInt32();
  58. }
  59. caseOperation.Int64:
  60. {
  61. returnIsInt64();
  62. }
  63. caseOperation.Single:
  64. {
  65. returnIsSingle();
  66. }
  67. caseOperation.Double:
  68. {
  69. returnIsDouble();
  70. }
  71. caseOperation.Boolean:
  72. {
  73. returnIsBoolean();
  74. }
  75. caseOperation.Char:
  76. {
  77. returnIsChar();
  78. }
  79. caseOperation.Decimal:
  80. {
  81. returnIsDecimal();
  82. }
  83. caseOperation.DateTime:
  84. {
  85. returnIsDateTime();
  86. }
  87. caseOperation.Date:
  88. {
  89. returnIsDate();
  90. }
  91. caseOperation.Time:
  92. {
  93. returnIsTime();
  94. }
  95. caseOperation.IPAddress:
  96. {
  97. returnIsIPAddress();
  98. }
  99. caseOperation.ChinaPhone:
  100. {
  101. returnIsChinaPhone();
  102. }
  103. caseOperation.ChinesePostalCode:
  104. {
  105. returnIsChinesePostalCode();
  106. }
  107. caseOperation.ChineseMobile:
  108. {
  109. returnIsChineseMobile();
  110. }
  111. caseOperation.EMail:
  112. {
  113. returnIsEmail();
  114. }
  115. caseOperation.URL:
  116. {
  117. returnIsURL();
  118. }
  119. caseOperation.ChineseWord:
  120. {
  121. returnIsChineseWord();
  122. }
  123. caseOperation.Number:
  124. {
  125. returnIsNumber();
  126. }
  127. caseOperation.StringModel_01:
  128. {
  129. returnIsStringModel_01();
  130. }
  131. caseOperation.StringModel_02:
  132. {
  133. returnIsStringModel_02();
  134. }
  135. caseOperation.WideWord:
  136. {
  137. returnIsWideWord();
  138. }
  139. caseOperation.NarrowWord:
  140. {
  141. returnIsNarrowWord();
  142. }
  143. caseOperation.ChineseID:
  144. {
  145. returnIsChineseID();
  146. }
  147. default:
  148. {
  149. returnfalse;
  150. }
  151. }
  152. }
  153. #endregion
  154. 具体验证方法#region具体验证方法
  155. 是否Byte类型(8位的无符号整数):0和255之间的无符号整数#region是否Byte类型(8位的无符号整数):0和255之间的无符号整数
  156. /**////<summary>
  157. ///是否Byte类型(8位的无符号整数):0和255之间的无符号整数
  158. ///</summary>
  159. ///<returns>Boolean</returns>
  160. protectedboolIsByte()
  161. {
  162. try
  163. {
  164. Byte.Parse(_String);
  165. }
  166. catch
  167. {
  168. returnfalse;
  169. }
  170. returntrue;
  171. }
  172. #endregion
  173. 是否SByte类型(8位的有符号整数):-128到+127之间的整数#region是否SByte类型(8位的有符号整数):-128到+127之间的整数
  174. /**////<summary>
  175. ///是否SByte类型(8位的有符号整数):-128到+127之间的整数
  176. ///</summary>
  177. ///<returns>Boolean</returns>
  178. protectedboolIsSByte()
  179. {
  180. try
  181. {
  182. SByte.Parse(_String);
  183. }
  184. catch
  185. {
  186. returnfalse;
  187. }
  188. returntrue;
  189. }
  190. #endregion
  191. 是否Int16类型(16位的有符号整数):-32768到+32767之间的有符号整数#region是否Int16类型(16位的有符号整数):-32768到+32767之间的有符号整数
  192. /**////<summary>
  193. ///是否Int16类型(16位的有符号整数):-32768到+32767之间的有符号整数
  194. ///</summary>
  195. ///<returns>Boolean</returns>
  196. protectedboolIsInt16()
  197. {
  198. try
  199. {
  200. Int16.Parse(_String);
  201. }
  202. catch
  203. {
  204. returnfalse;
  205. }
  206. returntrue;
  207. }
  208. #endregion
  209. 是否Int32类型(32位的有符号整数):-2,147,483,648到+2,147,483,647之间的有符号整数#region是否Int32类型(32位的有符号整数):-2,147,483,648到+2,147,483,647之间的有符号整数
  210. /**////<summary>
  211. ///是否Int32类型(32位的有符号整数):-2,147,483,648到+2,147,483,647之间的有符号整数
  212. ///</summary>
  213. ///<returns>Boolean</returns>
  214. protectedboolIsInt32()
  215. {
  216. try
  217. {
  218. Int32.Parse(_String);
  219. }
  220. catch
  221. {
  222. returnfalse;
  223. }
  224. returntrue;
  225. }
  226. #endregion
  227. 是否Int64类型(64位的有符号整数):-9,223,372,036,854,775,808到+9,223,372,036,854,775,807之间的整数#region是否Int64类型(64位的有符号整数):-9,223,372,036,854,775,808到+9,223,372,036,854,775,807之间的整数
  228. /**////<summary>
  229. ///是否Int64类型(64位的有符号整数):-9,223,372,036,854,775,808到+9,223,372,036,854,775,807之间的整数
  230. ///</summary>
  231. ///<returns>Boolean</returns>
  232. protectedboolIsInt64()
  233. {
  234. try
  235. {
  236. Int64.Parse(_String);
  237. }
  238. catch
  239. {
  240. returnfalse;
  241. }
  242. returntrue;
  243. }
  244. #endregion
  245. 是否Single类型(单精度(32位)浮点数字):-3.402823e38和+3.402823e38之间的单精度32位数字#region是否Single类型(单精度(32位)浮点数字):-3.402823e38和+3.402823e38之间的单精度32位数字
  246. /**////<summary>
  247. ///是否Single类型(单精度(32位)浮点数字):-3.402823e38和+3.402823e38之间的单精度32位数字
  248. ///</summary>
  249. ///<returns>Boolean</returns>
  250. protectedboolIsSingle()
  251. {
  252. try
  253. {
  254. Single.Parse(_String);
  255. }
  256. catch
  257. {
  258. returnfalse;
  259. }
  260. returntrue;
  261. }
  262. #endregion
  263. 是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字#region是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字
  264. /**////<summary>
  265. ///是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字
  266. ///</summary>
  267. ///<returns>Boolean</returns>
  268. protectedboolIsDouble()
  269. {
  270. try
  271. {
  272. Double.Parse(_String);
  273. }
  274. catch
  275. {
  276. returnfalse;
  277. }
  278. returntrue;
  279. }
  280. #endregion
  281. 是否Boolean类型(布尔值):truefalse#region是否Boolean类型(布尔值):truefalse
  282. /**////<summary>
  283. ///是否Double类型(单精度(64位)浮点数字):-1.79769313486232e308和+1.79769313486232e308之间的双精度64位数字
  284. ///</summary>
  285. ///<returns>Boolean</returns>
  286. protectedboolIsBoolean()
  287. {
  288. try
  289. {
  290. Boolean.Parse(_String);
  291. }
  292. catch
  293. {
  294. returnfalse;
  295. }
  296. returntrue;
  297. }
  298. #endregion
  299. 是否Char类型(Unicode(16位)字符):该16位数字的值范围为从十六进制值0x0000到0xFFFF#region是否Char类型(Unicode(16位)字符):该16位数字的值范围为从十六进制值0x0000到0xFFFF
  300. /**////<summary>
  301. ///是否Char类型(Unicode(16位)字符):该16位数字的值范围为从十六进制值0x0000到0xFFFF
  302. ///</summary>
  303. ///<returns>Boolean</returns>
  304. protectedboolIsChar()
  305. {
  306. try
  307. {
  308. Char.Parse(_String);
  309. }
  310. catch
  311. {
  312. returnfalse;
  313. }
  314. returntrue;
  315. }
  316. #endregion
  317. 是否Char类型(96位十进制值):从正79,228,162,514,264,337,593,543,950,335到负79,228,162,514,264,337,593,543,950,335之间的十进制数#region是否Char类型(96位十进制值):从正79,228,162,514,264,337,593,543,950,335到负79,228,162,514,264,337,593,543,950,335之间的十进制数
  318. /**////<summary>
  319. ///是否Char类型(96位十进制值):从正79,228,162,514,264,337,593,543,950,335到负79,228,162,514,264,337,593,543,950,335之间的十进制数
  320. ///</summary>
  321. ///<returns>Boolean</returns>
  322. protectedboolIsDecimal()
  323. {
  324. try
  325. {
  326. Decimal.Parse(_String);
  327. }
  328. catch
  329. {
  330. returnfalse;
  331. }
  332. returntrue;
  333. }
  334. #endregion
  335. 是否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之间的日期和时间
  336. /**////<summary>
  337. ///是否DateTime类型(表示时间上的一刻):范围在公元(基督纪元)0001年1月1日午夜12:00:00到公元(C.E.)9999年12月31日晚上11:59:59之间的日期和时间
  338. ///</summary>
  339. ///<returns>Boolean</returns>
  340. protectedboolIsDateTime()
  341. {
  342. try
  343. {
  344. DateTime.Parse(_String);
  345. }
  346. catch
  347. {
  348. returnfalse;
  349. }
  350. returntrue;
  351. }
  352. #endregion
  353. 是否Date类型(表示时间的日期部分):范围在公元(基督纪元)0001年1月1日到公元(C.E.)9999年12月31日之间的日期#region是否Date类型(表示时间的日期部分):范围在公元(基督纪元)0001年1月1日到公元(C.E.)9999年12月31日之间的日期
  354. /**////<summary>
  355. ///是否Date类型(表示时间的日期部分):范围在公元(基督纪元)0001年1月1日到公元(C.E.)9999年12月31日之间的日期
  356. ///</summary>
  357. ///<returns>Boolean</returns>
  358. protectedboolIsDate()
  359. {
  360. DateTimeValue;
  361. try
  362. {
  363. Value=DateTime.Parse(_String);
  364. }
  365. catch
  366. {
  367. returnfalse;
  368. }
  369. if(Value.Date.ToString()==_String)
  370. {
  371. returntrue;
  372. }
  373. else
  374. {
  375. returnfalse;
  376. }
  377. }
  378. #endregion
  379. 是否Time类型(表示时间部分HHMMSS):范围在夜12:00:00到晚上11:59:59之间的时间#region是否Time类型(表示时间部分HHMMSS):范围在夜12:00:00到晚上11:59:59之间的时间
  380. /**////<summary>
  381. ///是否Time类型(表示时间部分HHMMSS):范围在夜12:00:00到晚上11:59:59之间的时间
  382. ///</summary>
  383. ///<returns>Boolean</returns>
  384. protectedboolIsTime()
  385. {
  386. DateTimeValue;
  387. try
  388. {
  389. Value=DateTime.Parse(_String);
  390. }
  391. catch
  392. {
  393. returnfalse;
  394. }
  395. if(Value.Year==1&&Value.Month==1&&Value.Day==1)
  396. {
  397. returntrue;
  398. }
  399. else
  400. {
  401. returnfalse;
  402. }
  403. }
  404. #endregion
  405. 是否IPAddress类型(IPv4的情况下使用以点分隔的四部分表示法格式表示,IPv6的情况下使用冒号与十六进制格式表示)#region是否IPAddress类型(IPv4的情况下使用以点分隔的四部分表示法格式表示,IPv6的情况下使用冒号与十六进制格式表示)
  406. /**////<summary>
  407. ///是否IPAddress类型(IPv4的情况下使用以点分隔的四部分表示法格式表示,IPv6的情况下使用冒号与十六进制格式表示)
  408. ///</summary>
  409. ///<returns>Boolean</returns>
  410. protectedboolIsIPAddress()
  411. {
  412. try
  413. {
  414. System.Net.IPAddress.Parse(_String);
  415. }
  416. catch
  417. {
  418. returnfalse;
  419. }
  420. returntrue;
  421. }
  422. #endregion
  423. 是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX(\d{3,4})-?\d{7,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)#region是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX(\d{3,4})-?\d{7,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)
  424. /**////<summary>
  425. ///是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX(\d{3,4})-?\d{7,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)
  426. ///</summary>
  427. ///<returns>Boolean</returns>
  428. protectedboolIsChinaPhone()
  429. {
  430. ArrayListaryResult=newArrayList();
  431. returnCommRegularMatch(_String,@"(\d{3,4})-?\d{7,8}",RegexOptions.None,refaryResult,_IsEntirety);
  432. }
  433. #endregion
  434. 是否中国邮政编码(6位数字\d{6})#region是否中国邮政编码(6位数字\d{6})
  435. /**////<summary>
  436. ///是否中国邮政编码(6位数字\d{6})
  437. ///</summary>
  438. ///<returns>Boolean</returns>
  439. protectedboolIsChinesePostalCode()
  440. {
  441. ArrayListaryResult=newArrayList();
  442. returnCommRegularMatch(_String,@"\d{6}",RegexOptions.None,refaryResult,_IsEntirety);
  443. }
  444. #endregion
  445. 是否中国移动电话号码(13开头的总11位数字13\d{9})#region是否中国移动电话号码(13开头的总11位数字13\d{9})
  446. /**////<summary>
  447. ///是否中国移动电话号码(13开头的总11位数字13\d{9})
  448. ///</summary>
  449. ///<returns>Boolean</returns>
  450. protectedboolIsChineseMobile()
  451. {
  452. ArrayListaryResult=newArrayList();
  453. returnCommRegularMatch(_String,@"13\d{9}",RegexOptions.None,refaryResult,_IsEntirety);
  454. }
  455. #endregion
  456. 是否EMail类型(XXX@XXX.XXX\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)#region是否EMail类型(XXX@XXX.XXX\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)
  457. /**////<summary>
  458. ///是否EMail类型(XXX@XXX.XXX\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)
  459. ///</summary>
  460. ///<returns>Boolean</returns>
  461. protectedboolIsEmail()
  462. {
  463. ArrayListaryResult=newArrayList();
  464. returnCommRegularMatch(_String,@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",RegexOptions.None,refaryResult,_IsEntirety);
  465. }
  466. #endregion
  467. 是否InternetURL地址类型(http://)#region是否InternetURL地址类型(http://)
  468. /**////<summary>
  469. ///是否InternetURL地址类型(http://)
  470. ///</summary>
  471. ///<returns>Boolean</returns>
  472. protectedboolIsURL()
  473. {
  474. ArrayListaryResult=newArrayList();
  475. returnCommRegularMatch(_String,@"http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?",RegexOptions.None,refaryResult,_IsEntirety);
  476. }
  477. #endregion
  478. 是否中文字符([\u4e00-\u9fa5])#region是否中文字符([\u4e00-\u9fa5])
  479. /**////<summary>
  480. ///是否中文字符([\u4e00-\u9fa5])
  481. ///</summary>
  482. ///<returns>Boolean</returns>
  483. protectedboolIsChineseWord()
  484. {
  485. ArrayListaryResult=newArrayList();
  486. returnCommRegularMatch(_String,@"[\u4e00-\u9fa5]",RegexOptions.None,refaryResult,_IsEntirety);
  487. }
  488. #endregion
  489. 是否是数字(0到9的数字[\d]+):不包括符号".""-"#region是否是数字(0到9的数字[\d]+):不包括符号".""-"
  490. /**////<summary>
  491. ///是否是数字(0到9的数字[\d]+):不包括符号"."和"-"
  492. ///</summary>
  493. ///<returns>Boolean</returns>
  494. protectedboolIsNumber()
  495. {
  496. ArrayListaryResult=newArrayList();
  497. returnCommRegularMatch(_String,@"[\d]+",RegexOptions.None,refaryResult,_IsEntirety);
  498. }
  499. #endregion
  500. 是否只包含数字,英文和下划线([\w]+)#region是否只包含数字,英文和下划线([\w]+)
  501. /**////<summary>
  502. ///是否只包含数字,英文和下划线([\w]+)
  503. ///</summary>
  504. ///<returns>Boolean</returns>
  505. protectedboolIsStringModel_01()
  506. {
  507. ArrayListaryResult=newArrayList();
  508. returnCommRegularMatch(_String,@"[\w]+",RegexOptions.None,refaryResult,_IsEntirety);
  509. }
  510. #endregion
  511. 是否大写首字母的英文字母([A-Z][a-z]+)#region是否大写首字母的英文字母([A-Z][a-z]+)
  512. /**////<summary>
  513. ///是否大写首字母的英文字母([A-Z][a-z]+)
  514. ///</summary>
  515. ///<returns>Boolean</returns>
  516. protectedboolIsStringModel_02()
  517. {
  518. ArrayListaryResult=newArrayList();
  519. returnCommRegularMatch(_String,@"[A-Z][a-z]+",RegexOptions.None,refaryResult,_IsEntirety);
  520. }
  521. #endregion
  522. 是否全角字符([^\x00-\xff]):包括汉字在内#region是否全角字符([^\x00-\xff]):包括汉字在内
  523. /**////<summary>
  524. ///是否全角字符([^\x00-\xff]):包括汉字在内
  525. ///</summary>
  526. ///<returns>Boolean</returns>
  527. protectedboolIsWideWord()
  528. {
  529. ArrayListaryResult=newArrayList();
  530. returnCommRegularMatch(_String,@"[^\x00-\xff]",RegexOptions.None,refaryResult,_IsEntirety);
  531. }
  532. #endregion
  533. 是否半角字符([\x00-\xff])#region是否半角字符([\x00-\xff])
  534. /**////<summary>
  535. ///是否半角字符([^\x00-\xff]):包括汉字在内
  536. ///</summary>
  537. ///<returns>Boolean</returns>
  538. protectedboolIsNarrowWord()
  539. {
  540. ArrayListaryResult=newArrayList();
  541. returnCommRegularMatch(_String,@"[\x00-\xff]",RegexOptions.None,refaryResult,_IsEntirety);
  542. }
  543. #endregion
  544. 是否合法的中国身份证号码#region是否合法的中国身份证号码
  545. protectedboolIsChineseID()
  546. {
  547. if(_String.Length==15)
  548. {
  549. _String=CidUpdate(_String);
  550. }
  551. if(_String.Length==18)
  552. {
  553. stringstrResult=CheckCidInfo(_String);
  554. if(strResult=="非法地区"||strResult=="非法生日"||strResult=="非法证号")
  555. {
  556. returnfalse;
  557. }
  558. else
  559. {
  560. returntrue;
  561. }
  562. }
  563. else
  564. {
  565. returnfalse;
  566. }
  567. }
  568. #endregion
  569. #endregion
  570. 通用正则表达式判断函数#region通用正则表达式判断函数
  571. /**////<summary>
  572. ///通用正则表达式判断函数
  573. ///</summary>
  574. ///<paramname="strVerifyString">String,用于匹配的字符串</param>
  575. ///<paramname="strRegular">String,正则表达式</param>
  576. ///<paramname="regOption">RegexOptions,配置正则表达式的选项</param>
  577. ///<paramname="aryResult">ArrayList,分解的字符串内容</param>
  578. ///<paramname="IsEntirety">Boolean,是否需要完全匹配</param>
  579. ///<returns></returns>
  580. publicboolCommRegularMatch(stringstrVerifyString,stringstrRegular,System.Text.RegularExpressions.RegexOptionsregOption,refSystem.Collections.ArrayListaryResult,boolIsEntirety)
  581. {
  582. System.Text.RegularExpressions.Regexr;
  583. System.Text.RegularExpressions.Matchm;
  584. 如果需要完全匹配的处理#region如果需要完全匹配的处理
  585. if(IsEntirety)
  586. {
  587. strRegular=strRegular.Insert(0,@"\A");
  588. strRegular=strRegular.Insert(strRegular.Length,@"\z");
  589. }
  590. #endregion
  591. try
  592. {
  593. r=newSystem.Text.RegularExpressions.Regex(strRegular,regOption);
  594. }
  595. catch(System.Exceptione)
  596. {
  597. throw(e);
  598. }
  599. for(m=r.Match(strVerifyString);m.Success;m=m.NextMatch())
  600. {
  601. aryResult.Add(m);
  602. }
  603. if(aryResult.Count==0)
  604. {
  605. returnfalse;
  606. }
  607. else
  608. {
  609. returntrue;
  610. }
  611. }
  612. #endregion
  613. 中国身份证号码验证#region中国身份证号码验证
  614. privatestringCheckCidInfo(stringcid)
  615. {
  616. string[]aCity=newstring[]{null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古",null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海","江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南",null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃","青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外"};
  617. doubleiSum=0;
  618. stringinfo=string.Empty;
  619. System.Text.RegularExpressions.Regexrg=newSystem.Text.RegularExpressions.Regex(@"^\d{17}(\d|x)$");
  620. System.Text.RegularExpressions.Matchmc=rg.Match(cid);
  621. if(!mc.Success)
  622. {
  623. returnstring.Empty;
  624. }
  625. cid=cid.ToLower();
  626. cid=cid.Replace("x","a");
  627. if(aCity[int.Parse(cid.Substring(0,2))]==null)
  628. {
  629. return"非法地区";
  630. }
  631. try
  632. {
  633. DateTime.Parse(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2));
  634. }
  635. catch
  636. {
  637. return"非法生日";
  638. }
  639. for(inti=17;i>=0;i--)
  640. {
  641. iSum+=(System.Math.Pow(2,i)%11)*int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值