一个常用的正则表达验证类
生活随笔
收集整理的這篇文章主要介紹了
一个常用的正则表达验证类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這是
風語·深藍
很早以前寫的一個正則表達式驗證工具類,包含了一些常見的校驗和支持自定義的正則表達式匹配,可以選擇完全匹配,也可以獲取所有匹配項。曾用它仿造Eclispe下的正則表達式插件寫過一個工具。因為最近突然有幾個朋友都在問這方面的問題,干脆就把代碼貼出來好了。- using?System;
- using?System.Collections;
- using?System.Text.RegularExpressions;
- namespace?Xrinehart.Framework.Common.Validate
- {
- ????/**////?<summary>
- ????///?RegularMatch?的摘要說明。
- ????///?</summary>????
- ????public?class?RegularMatch
- ????{
- ????????private?string?_String;
- ????????private?bool?_IsEntirety;
- ????????/**////?<summary>
- ????????///?可以進行判斷的類型
- ????????///?</summary>
- ????????public?enum?Operation
- ????????{
- ????????????Byte,?SByte,?Int16,?Int32,?Int64,?Single,?Double,?Boolean,?Char,?Decimal,?DateTime,?Date,?Time,
- ????????????EMail,?URL,?ChinaPhone,?ChineseWord,?ChinesePostalCode,?Number,?StringModel_01,?StringModel_02,?WideWord,?NarrowWord,?IPAddress,
- ????????????ChineseMobile,?ChineseID
- ????????};
- ????????public?RegularMatch()?{?}
- ????????用于判斷字符串是否是對應類型(默認為包含匹配)#region?用于判斷字符串是否是對應類型(默認為包含匹配)
- ????????public?bool?IsAccordType(string?strVerifyString,?Operation?op)
- ????????{
- ????????????return?IsAccordType(strVerifyString,?op,?false);
- ????????}
- ????????#endregion
- ????????用于判斷字符串是否是對應類型(或是否包含對應類型的字符)#region?用于判斷字符串是否是對應類型(或是否包含對應類型的字符)
- ????????/**////?<summary>
- ????????///?用于判斷字符串是否是對應類型
- ????????///?</summary>
- ????????///?<param?name="strVerifyString">String,需要判斷的字符串</param>
- ????????///?<param?name="op">Operation枚舉,用于選擇需要進行的操作</param>
- ????????///?<param?name="IsEntirety">Boolean,判斷是完全匹配還是包含匹配模式(僅適用于非類型判斷時)</param>
- ????????///?<returns></returns>
- ????????public?bool?IsAccordType(string?strVerifyString,?Operation?op,?bool?IsEntirety)
- ????????{
- ????????????_String?=?strVerifyString;
- ????????????_IsEntirety?=?IsEntirety;
- ????????????switch?(op)
- ????????????{
- ????????????????case?Operation.Byte:
- ????????????????????{
- ????????????????????????return?IsByte();
- ????????????????????}
- ????????????????case?Operation.SByte:
- ????????????????????{
- ????????????????????????return?IsSByte();
- ????????????????????}
- ????????????????case?Operation.Int16:
- ????????????????????{
- ????????????????????????return?IsInt16();
- ????????????????????}
- ????????????????case?Operation.Int32:
- ????????????????????{
- ????????????????????????return?IsInt32();
- ????????????????????}
- ????????????????case?Operation.Int64:
- ????????????????????{
- ????????????????????????return?IsInt64();
- ????????????????????}
- ????????????????case?Operation.Single:
- ????????????????????{
- ????????????????????????return?IsSingle();
- ????????????????????}
- ????????????????case?Operation.Double:
- ????????????????????{
- ????????????????????????return?IsDouble();
- ????????????????????}
- ????????????????case?Operation.Boolean:
- ????????????????????{
- ????????????????????????return?IsBoolean();
- ????????????????????}
- ????????????????case?Operation.Char:
- ????????????????????{
- ????????????????????????return?IsChar();
- ????????????????????}
- ????????????????case?Operation.Decimal:
- ????????????????????{
- ????????????????????????return?IsDecimal();
- ????????????????????}
- ????????????????case?Operation.DateTime:
- ????????????????????{
- ????????????????????????return?IsDateTime();
- ????????????????????}
- ????????????????case?Operation.Date:
- ????????????????????{
- ????????????????????????return?IsDate();
- ????????????????????}
- ????????????????case?Operation.Time:
- ????????????????????{
- ????????????????????????return?IsTime();
- ????????????????????}
- ????????????????case?Operation.IPAddress:
- ????????????????????{
- ????????????????????????return?IsIPAddress();
- ????????????????????}
- ????????????????case?Operation.ChinaPhone:
- ????????????????????{
- ????????????????????????return?IsChinaPhone();
- ????????????????????}
- ????????????????case?Operation.ChinesePostalCode:
- ????????????????????{
- ????????????????????????return?IsChinesePostalCode();
- ????????????????????}
- ????????????????case?Operation.ChineseMobile:
- ????????????????????{
- ????????????????????????return?IsChineseMobile();
- ????????????????????}
- ????????????????case?Operation.EMail:
- ????????????????????{
- ????????????????????????return?IsEmail();
- ????????????????????}
- ????????????????case?Operation.URL:
- ????????????????????{
- ????????????????????????return?IsURL();
- ????????????????????}
- ????????????????case?Operation.ChineseWord:
- ????????????????????{
- ????????????????????????return?IsChineseWord();
- ????????????????????}
- ????????????????case?Operation.Number:
- ????????????????????{
- ????????????????????????return?IsNumber();
- ????????????????????}
- ????????????????case?Operation.StringModel_01:
- ????????????????????{
- ????????????????????????return?IsStringModel_01();
- ????????????????????}
- ????????????????case?Operation.StringModel_02:
- ????????????????????{
- ????????????????????????return?IsStringModel_02();
- ????????????????????}
- ????????????????case?Operation.WideWord:
- ????????????????????{
- ????????????????????????return?IsWideWord();
- ????????????????????}
- ????????????????case?Operation.NarrowWord:
- ????????????????????{
- ????????????????????????return?IsNarrowWord();
- ????????????????????}
- ????????????????case?Operation.ChineseID:
- ????????????????????{
- ????????????????????????return?IsChineseID();
- ????????????????????}
- ????????????????default:
- ????????????????????{
- ????????????????????????return?false;
- ????????????????????}
- ????????????}
- ????????}
- ????????#endregion
- ????????具體驗證方法#region?具體驗證方法
- ????????是否Byte類型(8?位的無符號整數):?0?和?255?之間的無符號整數#region?是否Byte類型(8?位的無符號整數):?0?和?255?之間的無符號整數
- ????????/**////?<summary>
- ????????///?是否Byte類型(8?位的無符號整數):?0?和?255?之間的無符號整數
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsByte()
- ????????{
- ????????????try
- ????????????{
- ????????????????Byte.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否SByte類型(8?位的有符號整數):?-128?到?+127?之間的整數#region?是否SByte類型(8?位的有符號整數):?-128?到?+127?之間的整數
- ????????/**////?<summary>
- ????????///?是否SByte類型(8?位的有符號整數):?-128?到?+127?之間的整數
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsSByte()
- ????????{
- ????????????try
- ????????????{
- ????????????????SByte.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Int16類型(16?位的有符號整數):?-32768?到?+32767?之間的有符號整數#region?是否Int16類型(16?位的有符號整數):?-32768?到?+32767?之間的有符號整數
- ????????/**////?<summary>
- ????????///?是否Int16類型(16?位的有符號整數):?-32768?到?+32767?之間的有符號整數
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsInt16()
- ????????{
- ????????????try
- ????????????{
- ????????????????Int16.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Int32類型(32?位的有符號整數):-2,147,483,648?到?+2,147,483,647?之間的有符號整數#region?是否Int32類型(32?位的有符號整數):-2,147,483,648?到?+2,147,483,647?之間的有符號整數
- ????????/**////?<summary>
- ????????///?是否Int32類型(32?位的有符號整數):-2,147,483,648?到?+2,147,483,647?之間的有符號整數
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsInt32()
- ????????{
- ????????????try
- ????????????{
- ????????????????Int32.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否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?之間的整數
- ????????/**////?<summary>
- ????????///?是否Int64類型(64?位的有符號整數):?-9,223,372,036,854,775,808?到?+9,223,372,036,854,775,807?之間的整數
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsInt64()
- ????????{
- ????????????try
- ????????????{
- ????????????????Int64.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Single類型(單精度(32?位)浮點數字):?-3.402823e38?和?+3.402823e38?之間的單精度?32?位數字#region?是否Single類型(單精度(32?位)浮點數字):?-3.402823e38?和?+3.402823e38?之間的單精度?32?位數字
- ????????/**////?<summary>
- ????????///?是否Single類型(單精度(32?位)浮點數字):?-3.402823e38?和?+3.402823e38?之間的單精度?32?位數字
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsSingle()
- ????????{
- ????????????try
- ????????????{
- ????????????????Single.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Double類型(單精度(64?位)浮點數字):?-1.79769313486232e308?和?+1.79769313486232e308?之間的雙精度?64?位數字#region?是否Double類型(單精度(64?位)浮點數字):?-1.79769313486232e308?和?+1.79769313486232e308?之間的雙精度?64?位數字
- ????????/**////?<summary>
- ????????///?是否Double類型(單精度(64?位)浮點數字):?-1.79769313486232e308?和?+1.79769313486232e308?之間的雙精度?64?位數字
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsDouble()
- ????????{
- ????????????try
- ????????????{
- ????????????????Double.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Boolean類型(布爾值):true?或?false#region?是否Boolean類型(布爾值):true?或?false
- ????????/**////?<summary>
- ????????///?是否Double類型(單精度(64?位)浮點數字):?-1.79769313486232e308?和?+1.79769313486232e308?之間的雙精度?64?位數字
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsBoolean()
- ????????{
- ????????????try
- ????????????{
- ????????????????Boolean.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Char類型(Unicode(16?位)字符):該?16?位數字的值范圍為從十六進制值?0x0000?到?0xFFFF#region?是否Char類型(Unicode(16?位)字符):該?16?位數字的值范圍為從十六進制值?0x0000?到?0xFFFF
- ????????/**////?<summary>
- ????????///?是否Char類型(Unicode(16?位)字符):該?16?位數字的值范圍為從十六進制值?0x0000?到?0xFFFF
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsChar()
- ????????{
- ????????????try
- ????????????{
- ????????????????Char.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否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?之間的十進制數
- ????????/**////?<summary>
- ????????///?是否Char類型(96?位十進制值):從正?79,228,162,514,264,337,593,543,950,335?到負?79,228,162,514,264,337,593,543,950,335?之間的十進制數
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsDecimal()
- ????????{
- ????????????try
- ????????????{
- ????????????????Decimal.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否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?之間的日期和時間
- ????????/**////?<summary>
- ????????///?是否DateTime類型(表示時間上的一刻):?范圍在公元(基督紀元)0001?年?1?月?1?日午夜?12:00:00?到公元?(C.E.)?9999?年?12?月?31?日晚上?11:59:59?之間的日期和時間
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsDateTime()
- ????????{
- ????????????try
- ????????????{
- ????????????????DateTime.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否Date類型(表示時間的日期部分):?范圍在公元(基督紀元)0001?年?1?月?1?日?到公元?(C.E.)?9999?年?12?月?31?日之間的日期#region?是否Date類型(表示時間的日期部分):?范圍在公元(基督紀元)0001?年?1?月?1?日?到公元?(C.E.)?9999?年?12?月?31?日之間的日期
- ????????/**////?<summary>
- ????????///?是否Date類型(表示時間的日期部分):?范圍在公元(基督紀元)0001?年?1?月?1?日?到公元?(C.E.)?9999?年?12?月?31?日之間的日期
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsDate()
- ????????{
- ????????????DateTime?Value;
- ????????????try
- ????????????{
- ????????????????Value?=?DateTime.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????if?(Value.Date.ToString()?==?_String)
- ????????????{
- ????????????????return?true;
- ????????????}
- ????????????else
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????}
- ????????#endregion
- ????????是否Time類型(表示時間部分HHMMSS):?范圍在夜?12:00:00?到晚上?11:59:59?之間的時間#region?是否Time類型(表示時間部分HHMMSS):?范圍在夜?12:00:00?到晚上?11:59:59?之間的時間
- ????????/**////?<summary>
- ????????///?是否Time類型(表示時間部分HHMMSS):?范圍在夜?12:00:00?到晚上?11:59:59?之間的時間
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsTime()
- ????????{
- ????????????DateTime?Value;
- ????????????try
- ????????????{
- ????????????????Value?=?DateTime.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????if?(Value.Year?==?1?&&?Value.Month?==?1?&&?Value.Day?==?1)
- ????????????{
- ????????????????return?true;
- ????????????}
- ????????????else
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????}
- ????????#endregion
- ????????是否IPAddress類型(IPv4?的情況下使用以點分隔的四部分表示法格式表示,IPv6?的情況下使用冒號與十六進制格式表示)#region?是否IPAddress類型(IPv4?的情況下使用以點分隔的四部分表示法格式表示,IPv6?的情況下使用冒號與十六進制格式表示)
- ????????/**////?<summary>
- ????????///?是否IPAddress類型(IPv4?的情況下使用以點分隔的四部分表示法格式表示,IPv6?的情況下使用冒號與十六進制格式表示)
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsIPAddress()
- ????????{
- ????????????try
- ????????????{
- ????????????????System.Net.IPAddress.Parse(_String);
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????return?true;
- ????????}
- ????????#endregion
- ????????是否中國電話號碼類型(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位)
- ????????/**////?<summary>
- ????????///?是否中國電話號碼類型(XXX/XXXX-XXXXXXX/XXXXXXXX?(/d{3,4})-?/d{7,8}):判斷是否是(區號:3或4位)-(電話號碼:7或8位)
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsChinaPhone()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"(/d{3,4})-?/d{7,8}",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否中國郵政編碼(6位數字?/d{6})#region?是否中國郵政編碼(6位數字?/d{6})
- ????????/**////?<summary>
- ????????///?是否中國郵政編碼(6位數字?/d{6})
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsChinesePostalCode()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"/d{6}",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否中國移動電話號碼(13開頭的總11位數字?13/d{9})#region?是否中國移動電話號碼(13開頭的總11位數字?13/d{9})
- ????????/**////?<summary>
- ????????///?是否中國移動電話號碼(13開頭的總11位數字?13/d{9})
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsChineseMobile()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"13/d{9}",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否EMail類型(XXX@XXX.XXX?/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)#region?是否EMail類型(XXX@XXX.XXX?/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)
- ????????/**////?<summary>
- ????????///?是否EMail類型(XXX@XXX.XXX?/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsEmail()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否Internet?URL地址類型(http://)#region?是否Internet?URL地址類型(http://)
- ????????/**////?<summary>
- ????????///?是否Internet?URL地址類型(http://)
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsURL()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"http://([/w-]+/.)+[/w-]+(/[/w-?./?%&=]*)?",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否中文字符([/u4e00-/u9fa5])#region?是否中文字符([/u4e00-/u9fa5])
- ????????/**////?<summary>
- ????????///?是否中文字符([/u4e00-/u9fa5])
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsChineseWord()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"[/u4e00-/u9fa5]",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否是數字(0到9的數字[/d]+):不包括符號"."和"-"#region?是否是數字(0到9的數字[/d]+):不包括符號"."和"-"
- ????????/**////?<summary>
- ????????///?是否是數字(0到9的數字[/d]+):不包括符號"."和"-"
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsNumber()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"[/d]+",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否只包含數字,英文和下劃線([/w]+)#region?是否只包含數字,英文和下劃線([/w]+)
- ????????/**////?<summary>
- ????????///?是否只包含數字,英文和下劃線([/w]+)
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsStringModel_01()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"[/w]+",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否大寫首字母的英文字母([A-Z][a-z]+)#region?是否大寫首字母的英文字母([A-Z][a-z]+)
- ????????/**////?<summary>
- ????????///?是否大寫首字母的英文字母([A-Z][a-z]+)
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsStringModel_02()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"[A-Z][a-z]+",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否全角字符([^/x00-/xff]):包括漢字在內#region?是否全角字符([^/x00-/xff]):包括漢字在內
- ????????/**////?<summary>
- ????????///?是否全角字符([^/x00-/xff]):包括漢字在內
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsWideWord()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"[^/x00-/xff]",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否半角字符([/x00-/xff])#region?是否半角字符([/x00-/xff])
- ????????/**////?<summary>
- ????????///?是否半角字符([^/x00-/xff]):包括漢字在內
- ????????///?</summary>
- ????????///?<returns>Boolean</returns>
- ????????protected?bool?IsNarrowWord()
- ????????{
- ????????????ArrayList?aryResult?=?new?ArrayList();
- ????????????return?CommRegularMatch(_String,?@"[/x00-/xff]",?RegexOptions.None,?ref?aryResult,?_IsEntirety);
- ????????}
- ????????#endregion
- ????????是否合法的中國身份證號碼#region?是否合法的中國身份證號碼
- ????????protected?bool?IsChineseID()
- ????????{
- ????????????if?(_String.Length?==?15)
- ????????????{
- ????????????????_String?=?CidUpdate(_String);
- ????????????}
- ????????????if?(_String.Length?==?18)
- ????????????{
- ????????????????string?strResult?=?CheckCidInfo(_String);
- ????????????????if?(strResult?==?"非法地區"?||?strResult?==?"非法生日"?||?strResult?==?"非法證號")
- ????????????????{
- ????????????????????return?false;
- ????????????????}
- ????????????????else
- ????????????????{
- ????????????????????return?true;
- ????????????????}
- ????????????}
- ????????????else
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????}
- ????????#endregion
- ????????#endregion
- ????????通用正則表達式判斷函數#region?通用正則表達式判斷函數
- ????????/**////?<summary>
- ????????///?通用正則表達式判斷函數
- ????????///?</summary>
- ????????///?<param?name="strVerifyString">String,用于匹配的字符串</param>
- ????????///?<param?name="strRegular">String,正則表達式</param>
- ????????///?<param?name="regOption">RegexOptions,配置正則表達式的選項</param>
- ????????///?<param?name="aryResult">ArrayList,分解的字符串內容</param>
- ????????///?<param?name="IsEntirety">Boolean,是否需要完全匹配</param>
- ????????///?<returns></returns>
- ????????public?bool?CommRegularMatch(string?strVerifyString,?string?strRegular,?System.Text.RegularExpressions.RegexOptions?regOption,?ref?System.Collections.ArrayList?aryResult,?bool?IsEntirety)
- ????????{
- ????????????System.Text.RegularExpressions.Regex?r;
- ????????????System.Text.RegularExpressions.Match?m;
- ????????????如果需要完全匹配的處理#region?如果需要完全匹配的處理
- ????????????if?(IsEntirety)
- ????????????{
- ????????????????strRegular?=?strRegular.Insert(0,?@"/A");
- ????????????????strRegular?=?strRegular.Insert(strRegular.Length,?@"/z");
- ????????????}
- ????????????#endregion
- ????????????try
- ????????????{
- ????????????????r?=?new?System.Text.RegularExpressions.Regex(strRegular,?regOption);
- ????????????}
- ????????????catch?(System.Exception?e)
- ????????????{
- ????????????????throw?(e);
- ????????????}
- ????????????for?(m?=?r.Match(strVerifyString);?m.Success;?m?=?m.NextMatch())
- ????????????{
- ????????????????aryResult.Add(m);
- ????????????}
- ????????????if?(aryResult.Count?==?0)
- ????????????{
- ????????????????return?false;
- ????????????}
- ????????????else
- ????????????{
- ????????????????return?true;
- ????????????}
- ????????}
- ????????#endregion
- ????????中國身份證號碼驗證#region?中國身份證號碼驗證
- ????????private?string?CheckCidInfo(string?cid)
- ????????{
- ????????????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,?"國外"?};
- ????????????double?iSum?=?0;
- ????????????string?info?=?string.Empty;
- ????????????System.Text.RegularExpressions.Regex?rg?=?new?System.Text.RegularExpressions.Regex(@"^/d{17}(/d|x)$");
- ????????????System.Text.RegularExpressions.Match?mc?=?rg.Match(cid);
- ????????????if?(!mc.Success)
- ????????????{
- ????????????????return?string.Empty;
- ????????????}
- ????????????cid?=?cid.ToLower();
- ????????????cid?=?cid.Replace("x",?"a");
- ????????????if?(aCity[int.Parse(cid.Substring(0,?2))]?==?null)
- ????????????{
- ????????????????return?"非法地區";
- ????????????}
- ????????????try
- ????????????{
- ????????????????DateTime.Parse(cid.Substring(6,?4)?+?"?-?"?+?cid.Substring(10,?2)?+?"?-?"?+?cid.Substring(12,?2));
- ????????????}
- ????????????catch
- ????????????{
- ????????????????return?"非法生日";
- ????????????}
- ????????????for?(int?i?=?17;?i?>=?0;?i--)
- ????????????{
- ????????????????iSum?+=?(System.Math.Pow(2,?i)?%?11)?*?int.Parse(cid[17?-?i].ToString(),?System.Globalization.NumberStyles.HexNumber);
- ????????????}
- ????????????if?(iSum?%?11?!=?1)
- ????????????{
- ????????????????return?("非法證號");
- ????????????}
- ????????????else
- ????????????{
- ????????????????return?(aCity[int.Parse(cid.Substring(0,?2))]?+?","?+?cid.Substring(6,?4)?+?"-"?+?cid.Substring(10,?2)?+?"-"?+?cid.Substring(12,?2)?+?","?+?(int.Parse(cid.Substring(16,?1))?%?2?==?1???"男"?:?"女"));
- ????????????}
- ????????}
- ????????#endregion
- ????????身份證號碼15升級為18位#region?身份證號碼15升級為18位
- ????????private?string?CidUpdate(string?ShortCid)
- ????????{
- ????????????char[]?strJiaoYan?=?{?'1',?'0',?'X',?'9',?'8',?'7',?'6',?'5',?'4',?'3',?'2'?};
- ????????????int[]?intQuan?=?{?7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2,?1?};
- ????????????string?strTemp;
- ????????????int?intTemp?=?0;
- ????????????strTemp?=?ShortCid.Substring(0,?6)?+?"19"?+?ShortCid.Substring(6);
- ????????????for?(int?i?=?0;?i?<=?strTemp.Length?-?1;?i++)
- ????????????{
- ????????????????intTemp?+=?int.Parse(strTemp.Substring(i,?1))?*?intQuan[i];
- ????????????}
- ????????????intTemp?=?intTemp?%?11;
- ????????????return?strTemp?+?strJiaoYan[intTemp];
- ????????}
- ????????#endregion
- ????}
- }
總結
以上是生活随笔為你收集整理的一个常用的正则表达验证类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硬中华多少钱啊?
- 下一篇: 求一个难受想哭的个性签名