1. using System;
  2. using System.Collections;
  3. using System.Text.RegularExpressions;
  4.  
  5. namespace MSCL
  6. {
  7. //// <summary>
  8. /// RegularMatch正则验证类
  9. /// </summary>
  10. public class RegHelper
  11. {
  12. private string _String;
  13. private bool _IsEntirety;
  14.  
  15. /**//// <summary>
  16. /// 可以进行判断的类型
  17. /// </summary>
  18. public enum Operation
  19. {
  20. Byte, SByte, Int16, Int32, Int64, Single, Double, Boolean, Char, Decimal, DateTime, Date, Time,
  21. EMail, URL, ChinaPhone, ChineseWord, ChinesePostalCode, Number, StringModel_01, StringModel_02, WideWord, NarrowWord, IPAddress,
  22. ChineseMobile, ChineseID
  23. };
  24.  
  25. #region 用于判断字符串是否是对应类型(默认为包含匹配)
  26. /// <summary>
  27. /// 用于判断字符串是否是对应类型
  28. /// <code>
  29. /// MSCL.RegHelper rm = new MSCL.RegHelper();
  30. /// Response.Write(rm.IsAccordType("123", MSCL.RegHelper.Operation.ChineseWord));
  31. /// </code>
  32. /// </summary>
  33. /// <param name="strVerifyString">String,需要判断的字符串</param>
  34. /// <param name="op">Operation枚举,用于选择需要进行的操作</param>
  35. /// <returns></returns>
  36. public bool IsAccordType(string strVerifyString, Operation op)
  37. {
  38. return IsAccordType(strVerifyString, op, false);
  39. }
  40. #endregion
  41.  
  42. #region 用于判断字符串是否是对应类型(或是否包含对应类型的字符)
  43. /**//// <summary>
  44. /// 用于判断字符串是否是对应类型
  45. /// </summary>
  46. /// <param name="strVerifyString">String,需要判断的字符串</param>
  47. /// <param name="op">Operation枚举,用于选择需要进行的操作</param>
  48. /// <param name="IsEntirety">Boolean,判断是完全匹配还是包含匹配模式(仅适用于非类型判断时)</param>
  49. /// <returns></returns>
  50. public bool IsAccordType(string strVerifyString, Operation op, bool IsEntirety)
  51. {
  52. _String = strVerifyString;
  53. _IsEntirety = IsEntirety;
  54.  
  55. switch (op)
  56. {
  57. case Operation.Byte:
  58. {
  59. return IsByte();
  60. }
  61. case Operation.SByte:
  62. {
  63. return IsSByte();
  64. }
  65. case Operation.Int16:
  66. {
  67. return IsInt16();
  68. }
  69. case Operation.Int32:
  70. {
  71. return IsInt32();
  72. }
  73. case Operation.Int64:
  74. {
  75. return IsInt64();
  76. }
  77. case Operation.Single:
  78. {
  79. return IsSingle();
  80. }
  81. case Operation.Double:
  82. {
  83. return IsDouble();
  84. }
  85. case Operation.Boolean:
  86. {
  87. return IsBoolean();
  88. }
  89. case Operation.Char:
  90. {
  91. return IsChar();
  92. }
  93. case Operation.Decimal:
  94. {
  95. return IsDecimal();
  96. }
  97. case Operation.DateTime:
  98. {
  99. return IsDateTime();
  100. }
  101. case Operation.Date:
  102. {
  103. return IsDate();
  104. }
  105. case Operation.Time:
  106. {
  107. return IsTime();
  108. }
  109. case Operation.IPAddress:
  110. {
  111. return IsIPAddress();
  112. }
  113. case Operation.ChinaPhone:
  114. {
  115. return IsChinaPhone();
  116. }
  117. case Operation.ChinesePostalCode:
  118. {
  119. return IsChinesePostalCode();
  120. }
  121. case Operation.ChineseMobile:
  122. {
  123. return IsChineseMobile();
  124. }
  125. case Operation.EMail:
  126. {
  127. return IsEmail();
  128. }
  129. case Operation.URL:
  130. {
  131. return IsURL();
  132. }
  133. case Operation.ChineseWord:
  134. {
  135. return IsChineseWord();
  136. }
  137. case Operation.Number:
  138. {
  139. return IsNumber();
  140. }
  141. case Operation.StringModel_01:
  142. {
  143. return IsStringModel_01();
  144. }
  145. case Operation.StringModel_02:
  146. {
  147. return IsStringModel_02();
  148. }
  149. case Operation.WideWord:
  150. {
  151. return IsWideWord();
  152. }
  153. case Operation.NarrowWord:
  154. {
  155. return IsNarrowWord();
  156. }
  157. case Operation.ChineseID:
  158. {
  159. return IsChineseID();
  160. }
  161. default:
  162. {
  163. return false;
  164. }
  165. }
  166. }
  167. #endregion
  168.  
  169. #region 具体验证方法
  170.  
  171. #region 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
  172. /**//// <summary>
  173. /// 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
  174. /// </summary>
  175. /// <returns>Boolean</returns>
  176. protected bool IsByte()
  177. {
  178. try
  179. {
  180. Byte.Parse(_String);
  181. }
  182. catch
  183. {
  184. return false;
  185. }
  186. return true;
  187. }
  188. #endregion
  189.  
  190. #region 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
  191. /**//// <summary>
  192. /// 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
  193. /// </summary>
  194. /// <returns>Boolean</returns>
  195. protected bool IsSByte()
  196. {
  197. try
  198. {
  199. SByte.Parse(_String);
  200. }
  201. catch
  202. {
  203. return false;
  204. }
  205. return true;
  206. }
  207. #endregion
  208.  
  209. #region 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
  210. /**//// <summary>
  211. /// 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
  212. /// </summary>
  213. /// <returns>Boolean</returns>
  214. protected bool IsInt16()
  215. {
  216. try
  217. {
  218. Int16.Parse(_String);
  219. }
  220. catch
  221. {
  222. return false;
  223. }
  224. return true;
  225. }
  226. #endregion
  227.  
  228. #region 是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数
  229. /**//// <summary>
  230. /// 是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数
  231. /// </summary>
  232. /// <returns>Boolean</returns>
  233. protected bool IsInt32()
  234. {
  235. try
  236. {
  237. Int32.Parse(_String);
  238. }
  239. catch
  240. {
  241. return false;
  242. }
  243. return true;
  244. }
  245. #endregion
  246.  
  247. #region 是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数
  248. /**//// <summary>
  249. /// 是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数
  250. /// </summary>
  251. /// <returns>Boolean</returns>
  252. protected bool IsInt64()
  253. {
  254. try
  255. {
  256. Int64.Parse(_String);
  257. }
  258. catch
  259. {
  260. return false;
  261. }
  262. return true;
  263. }
  264. #endregion
  265.  
  266. #region 是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字
  267. /**//// <summary>
  268. /// 是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字
  269. /// </summary>
  270. /// <returns>Boolean</returns>
  271. protected bool IsSingle()
  272. {
  273. try
  274. {
  275. Single.Parse(_String);
  276. }
  277. catch
  278. {
  279. return false;
  280. }
  281. return true;
  282. }
  283. #endregion
  284.  
  285. #region 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  286. /**//// <summary>
  287. /// 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  288. /// </summary>
  289. /// <returns>Boolean</returns>
  290. protected bool IsDouble()
  291. {
  292. try
  293. {
  294. Double.Parse(_String);
  295. }
  296. catch
  297. {
  298. return false;
  299. }
  300. return true;
  301. }
  302. #endregion
  303.  
  304. #region 是否Boolean类型(布尔值):true 或 false
  305. /**//// <summary>
  306. /// 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  307. /// </summary>
  308. /// <returns>Boolean</returns>
  309. protected bool IsBoolean()
  310. {
  311. try
  312. {
  313. Boolean.Parse(_String);
  314. }
  315. catch
  316. {
  317. return false;
  318. }
  319. return true;
  320. }
  321. #endregion
  322.  
  323. #region 是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF
  324. /**//// <summary>
  325. /// 是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF
  326. /// </summary>
  327. /// <returns>Boolean</returns>
  328. protected bool IsChar()
  329. {
  330. try
  331. {
  332. Char.Parse(_String);
  333. }
  334. catch
  335. {
  336. return false;
  337. }
  338. return true;
  339. }
  340. #endregion
  341.  
  342. #region 是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数
  343. /**//// <summary>
  344. /// 是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数
  345. /// </summary>
  346. /// <returns>Boolean</returns>
  347. protected bool IsDecimal()
  348. {
  349. try
  350. {
  351. Decimal.Parse(_String);
  352. }
  353. catch
  354. {
  355. return false;
  356. }
  357. return true;
  358. }
  359. #endregion
  360.  
  361. #region 是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间
  362. /**//// <summary>
  363. /// 是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间
  364. /// </summary>
  365. /// <returns>Boolean</returns>
  366. protected bool IsDateTime()
  367. {
  368. try
  369. {
  370. DateTime.Parse(_String);
  371. }
  372. catch
  373. {
  374. return false;
  375. }
  376. return true;
  377. }
  378. #endregion
  379.  
  380. #region 是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期
  381. /**//// <summary>
  382. /// 是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期
  383. /// </summary>
  384. /// <returns>Boolean</returns>
  385. protected bool IsDate()
  386. {
  387. DateTime Value;
  388. try
  389. {
  390. Value = DateTime.Parse(_String);
  391. }
  392. catch
  393. {
  394. return false;
  395. }
  396. if (Value.Date.ToString() == _String)
  397. {
  398. return true;
  399. }
  400. else
  401. {
  402. return false;
  403. }
  404. }
  405. #endregion
  406.  
  407. #region 是否Time类型(表示时间部分HHMMSS): 范围在夜 12:00:00 到晚上 11:59:59 之间的时间
  408. /**//// <summary>
  409. /// 是否Time类型(表示时间部分HHMMSS): 范围在夜 12:00:00 到晚上 11:59:59 之间的时间
  410. /// </summary>
  411. /// <returns>Boolean</returns>
  412. protected bool IsTime()
  413. {
  414. DateTime Value;
  415. try
  416. {
  417. Value = DateTime.Parse(_String);
  418. }
  419. catch
  420. {
  421. return false;
  422. }
  423. if (Value.Year == && Value.Month == && Value.Day == )
  424. {
  425. return true;
  426. }
  427. else
  428. {
  429. return false;
  430. }
  431. }
  432. #endregion
  433.  
  434. #region 是否IPAddress类型(IPv4 的情况下使用以点分隔的四部分表示法格式表示,IPv6 的情况下使用冒号与十六进制格式表示)
  435. /**//// <summary>
  436. /// 是否IPAddress类型(IPv4 的情况下使用以点分隔的四部分表示法格式表示,IPv6 的情况下使用冒号与十六进制格式表示)
  437. /// </summary>
  438. /// <returns>Boolean</returns>
  439. protected bool IsIPAddress()
  440. {
  441. try
  442. {
  443. System.Net.IPAddress.Parse(_String);
  444. }
  445. catch
  446. {
  447. return false;
  448. }
  449. return true;
  450. }
  451. #endregion
  452.  
  453. #region 是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX (\d{3,4})-?\d{7,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)
  454. /**//// <summary>
  455. /// 是否中国电话号码类型(XXX/XXXX-XXXXXXX/XXXXXXXX (\d{3,4})-?\d{7,8}):判断是否是(区号:3或4位)-(电话号码:7或8位)
  456. /// </summary>
  457. /// <returns>Boolean</returns>
  458. protected bool IsChinaPhone()
  459. {
  460. ArrayList aryResult = new ArrayList();
  461. return CommRegularMatch(_String, @"(\d{3,4})-?\d{7,8}", RegexOptions.None, ref aryResult, _IsEntirety);
  462. }
  463. #endregion
  464.  
  465. #region 是否中国邮政编码(6位数字 \d{6})
  466. /**//// <summary>
  467. /// 是否中国邮政编码(6位数字 \d{6})
  468. /// </summary>
  469. /// <returns>Boolean</returns>
  470. protected bool IsChinesePostalCode()
  471. {
  472. ArrayList aryResult = new ArrayList();
  473. return CommRegularMatch(_String, @"\d{6}", RegexOptions.None, ref aryResult, _IsEntirety);
  474. }
  475. #endregion
  476.  
  477. #region 是否中国移动电话号码(13开头的总11位数字 13\d{9})
  478. /**//// <summary>
  479. /// 是否中国移动电话号码(13开头的总11位数字 13\d{9})
  480. /// </summary>
  481. /// <returns>Boolean</returns>
  482. protected bool IsChineseMobile()
  483. {
  484. ArrayList aryResult = new ArrayList();
  485. return CommRegularMatch(_String, @"13\d{9}", RegexOptions.None, ref aryResult, _IsEntirety);
  486. }
  487. #endregion
  488.  
  489. #region 是否EMail类型(XXX@XXX.XXX \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)
  490. /**//// <summary>
  491. /// 是否EMail类型(XXX@XXX.XXX \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)
  492. /// </summary>
  493. /// <returns>Boolean</returns>
  494. protected bool IsEmail()
  495. {
  496. ArrayList aryResult = new ArrayList();
  497. return CommRegularMatch(_String, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.None, ref aryResult, _IsEntirety);
  498. }
  499. #endregion
  500.  
  501. #region 是否Internet URL地址类型(http://)
  502. /**//// <summary>
  503. /// 是否Internet URL地址类型(http://)
  504. /// </summary>
  505. /// <returns>Boolean</returns>
  506. protected bool IsURL()
  507. {
  508. ArrayList aryResult = new ArrayList();
  509. return CommRegularMatch(_String, @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.None, ref aryResult, _IsEntirety);
  510. }
  511. #endregion
  512.  
  513. #region 是否中文字符([\u4e00-\u9fa5])
  514. /**//// <summary>
  515. /// 是否中文字符([\u4e00-\u9fa5])
  516. /// </summary>
  517. /// <returns>Boolean</returns>
  518. protected bool IsChineseWord()
  519. {
  520. ArrayList aryResult = new ArrayList();
  521. return CommRegularMatch(_String, @"[\u4e00-\u9fa5]", RegexOptions.None, ref aryResult, _IsEntirety);
  522. }
  523. #endregion
  524.  
  525. #region 是否是数字(0到9的数字[\d]+):不包括符号"."和"-"
  526. /**//// <summary>
  527. /// 是否是数字(0到9的数字[\d]+):不包括符号"."和"-"
  528. /// </summary>
  529. /// <returns>Boolean</returns>
  530. protected bool IsNumber()
  531. {
  532. ArrayList aryResult = new ArrayList();
  533. return CommRegularMatch(_String, @"[\d]+", RegexOptions.None, ref aryResult, _IsEntirety);
  534. }
  535. #endregion
  536.  
  537. #region 是否只包含数字,英文和下划线([\w]+)
  538. /**//// <summary>
  539. /// 是否只包含数字,英文和下划线([\w]+)
  540. /// </summary>
  541. /// <returns>Boolean</returns>
  542. protected bool IsStringModel_01()
  543. {
  544. ArrayList aryResult = new ArrayList();
  545. return CommRegularMatch(_String, @"[\w]+", RegexOptions.None, ref aryResult, _IsEntirety);
  546. }
  547. #endregion
  548.  
  549. #region 是否大写首字母的英文字母([A-Z][a-z]+)
  550. /**//// <summary>
  551. /// 是否大写首字母的英文字母([A-Z][a-z]+)
  552. /// </summary>
  553. /// <returns>Boolean</returns>
  554. protected bool IsStringModel_02()
  555. {
  556. ArrayList aryResult = new ArrayList();
  557. return CommRegularMatch(_String, @"[A-Z][a-z]+", RegexOptions.None, ref aryResult, _IsEntirety);
  558. }
  559. #endregion
  560.  
  561. #region 是否全角字符([^\x00-\xff]):包括汉字在内
  562. /**//// <summary>
  563. /// 是否全角字符([^\x00-\xff]):包括汉字在内
  564. /// </summary>
  565. /// <returns>Boolean</returns>
  566. protected bool IsWideWord()
  567. {
  568. ArrayList aryResult = new ArrayList();
  569. return CommRegularMatch(_String, @"[^\x00-\xff]", RegexOptions.None, ref aryResult, _IsEntirety);
  570. }
  571. #endregion
  572.  
  573. #region 是否半角字符([\x00-\xff])
  574. /**//// <summary>
  575. /// 是否半角字符([^\x00-\xff]):包括汉字在内
  576. /// </summary>
  577. /// <returns>Boolean</returns>
  578. protected bool IsNarrowWord()
  579. {
  580. ArrayList aryResult = new ArrayList();
  581. return CommRegularMatch(_String, @"[\x00-\xff]", RegexOptions.None, ref aryResult, _IsEntirety);
  582. }
  583. #endregion
  584.  
  585. #region 是否合法的中国身份证号码
  586. protected bool IsChineseID()
  587. {
  588. if (_String.Length == )
  589. {
  590. _String = CidUpdate(_String);
  591. }
  592. if (_String.Length == )
  593. {
  594. string strResult = CheckCidInfo(_String);
  595. if (strResult == "非法地区" || strResult == "非法生日" || strResult == "非法证号")
  596. {
  597. return false;
  598. }
  599. else
  600. {
  601. return true;
  602. }
  603. }
  604. else
  605. {
  606. return false;
  607. }
  608. }
  609. #endregion
  610.  
  611. #endregion
  612.  
  613. #region 通用正则表达式判断函数
  614. /**//// <summary>
  615. /// 通用正则表达式判断函数
  616. /// </summary>
  617. /// <param name="strVerifyString">String,用于匹配的字符串</param>
  618. /// <param name="strRegular">String,正则表达式</param>
  619. /// <param name="regOption">RegexOptions,配置正则表达式的选项</param>
  620. /// <param name="aryResult">ArrayList,分解的字符串内容</param>
  621. /// <param name="IsEntirety">Boolean,是否需要完全匹配</param>
  622. /// <returns></returns>
  623. public bool CommRegularMatch(string strVerifyString, string strRegular, System.Text.RegularExpressions.RegexOptions regOption, ref System.Collections.ArrayList aryResult, bool IsEntirety)
  624. {
  625. System.Text.RegularExpressions.Regex r;
  626. System.Text.RegularExpressions.Match m;
  627.  
  628. #region 如果需要完全匹配的处理
  629. if (IsEntirety)
  630. {
  631. strRegular = strRegular.Insert(, @"\A");
  632. strRegular = strRegular.Insert(strRegular.Length, @"\z");
  633. }
  634. #endregion
  635.  
  636. try
  637. {
  638. r = new System.Text.RegularExpressions.Regex(strRegular, regOption);
  639. }
  640. catch (System.Exception e)
  641. {
  642. throw (e);
  643. }
  644.  
  645. for (m = r.Match(strVerifyString); m.Success; m = m.NextMatch())
  646. {
  647. aryResult.Add(m);
  648. }
  649.  
  650. if (aryResult.Count == )
  651. {
  652. return false;
  653. }
  654. else
  655. {
  656. return true;
  657. }
  658. }
  659. #endregion
  660.  
  661. #region 中国身份证号码验证
  662. private string CheckCidInfo(string cid)
  663. {
  664. string[] aCity = new string[] { 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, "国外" };
  665. double iSum = ;
  666. string info = string.Empty;
  667. System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(@"^\d{17}(\d|x)$");
  668. System.Text.RegularExpressions.Match mc = rg.Match(cid);
  669. if (!mc.Success)
  670. {
  671. return string.Empty;
  672. }
  673. cid = cid.ToLower();
  674. cid = cid.Replace("x", "a");
  675. if (aCity[int.Parse(cid.Substring(, ))] == null)
  676. {
  677. return "非法地区";
  678. }
  679. try
  680. {
  681. DateTime.Parse(cid.Substring(, ) + " - " + cid.Substring(, ) + " - " + cid.Substring(, ));
  682. }
  683. catch
  684. {
  685. return "非法生日";
  686. }
  687. for (int i = ; i >= ; i--)
  688. {
  689. iSum += (System.Math.Pow(, i) % ) * int.Parse(cid[ - i].ToString(), System.Globalization.NumberStyles.HexNumber);
  690. }
  691. if (iSum % != )
  692. {
  693. return ("非法证号");
  694. }
  695. else
  696. {
  697. return (aCity[int.Parse(cid.Substring(, ))] + "," + cid.Substring(, ) + "-" + cid.Substring(, ) + "-" + cid.Substring(, ) + "," + (int.Parse(cid.Substring(, )) % == ? "男" : "女"));
  698. }
  699. }
  700. #endregion
  701.  
  702. #region 身份证号码15升级为18位
  703. private string CidUpdate(string ShortCid)
  704. {
  705. char[] strJiaoYan = { '', '', 'X', '', '', '', '', '', '', '', '' };
  706. int[] intQuan = { , , , , , , , , , , , , , , , , , };
  707. string strTemp;
  708. int intTemp = ;
  709.  
  710. strTemp = ShortCid.Substring(, ) + "" + ShortCid.Substring();
  711. for (int i = ; i <= strTemp.Length - ; i++)
  712. {
  713. intTemp += int.Parse(strTemp.Substring(i, )) * intQuan[i];
  714. }
  715. intTemp = intTemp % ;
  716. return strTemp + strJiaoYan[intTemp];
  717. }
  718. #endregion
  719. }
  720. }

Asp.net(C#)常用正则表达式封装的更多相关文章

  1. 【转】【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式

    本文属转载,来源: http://www.byywee.com/page/M0/S868/868615.html 关于Model验证官方资料: http://msdn.microsoft.com/zh ...

  2. 【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式

    转自:http://www.cnblogs.com/easy5weikai/p/3843131.html 关于Model验证官方资料: http://msdn.microsoft.com/zh-cn/ ...

  3. asp.net mvc Model验证总结及常用正则表达式【转载】

    关于Model验证官方资料: http://msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations.aspx AS ...

  4. mvc Model验证总结及常用正则表达式

    本文属转载,来源: http://www.byywee.com/page/M0/S868/868615.html 关于Model验证官方资料: http://msdn.microsoft.com/zh ...

  5. Javascript正则构造函数与正则表达字面量&&常用正则表达式

    本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...

  6. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  7. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  8. 常用正则表达式-copy

    匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\ ...

  9. ASP.NET中常用的几个李天平开源公共类LTP.Common,Maticsoft.DBUtility,LtpPageControl

    ASP.NET中常用的几个开源公共类: LTP.Common.dll: 通用函数类库     源码下载Maticsoft.DBUtility.dll 数据访问类库组件     源码下载LtpPageC ...

随机推荐

  1. NetCore的控制台应用中搭建WebServer的方法

    一.新建NetCore控制台项目,并引入下列Nuget包: Microsoft.AspNetCore.StaticFiles.Microsoft.AspNetCore.Http.Microsoft.A ...

  2. Pause Web Sessions

    To pause specific sessions, add rules using FiddlerScript to the OnBeforeRequest function (except wh ...

  3. CyclicBarrier的用法

    CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待, ...

  4. oracle下的数据库实例、表空间、用户及其表的区分

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  5. 【Zookeeper】源码分析之持久化(一)之FileTxnLog

    一.前言 前一篇已经分析了序列化,这篇接着分析Zookeeper的持久化过程源码,持久化对于数据的存储至关重要,下面进行详细分析. 二.持久化总体框架 持久化的类主要在包org.apache.zook ...

  6. snabbdom vdom 框架

    1.snabbdom github地址:https://github.com/snabbdom/snabbdom 2.核心方法 var vnode = h('div#container.two.cla ...

  7. android JNI调用(Android Studio 3.0.1)(转)

    最近回头复习了一下android 的jni调用,却发现按以前的方法调用失败,一怒之下就重新摸索,碰了几次壁,发现网上好多教程都不能成功调用,于是记录一下现在AS版本成功好用的调用方法. 这里设定你的n ...

  8. 利用Linux文件系统内存cache来提高性能

    https://www.linuxjournal.com/article/6345 利用Linux文件系统内存cache来提高性能 本地磁盘文件->socket发送,4步骤数据流向: hard ...

  9. jqPlot图表插件学习之折线图-散点图-series属性

    一.准备工作 首先我们需要到官网下载所需的文件: 官网下载(笔者选择的是jquery.jqplot.1.0.8r1250.zip这个版本) 然后读者需要根据自己的情况新建一个项目并且按照如下的方式加载 ...

  10. 安装win和xp双系统 若干问题

    装了winxp和linux双系统,后先在winxp下手动格式化了linux系统,后启动时提示grub错误,重新分区后系统也 2010-09-17 21:07 [清风剑] | 分类:Linux | 浏览 ...