C#中經常使用的正則表達式實例。本站提示廣大學習愛好者:(C#中經常使用的正則表達式實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中經常使用的正則表達式實例正文
今朝為止,很多編程說話和對象都包括對正則表達式的支撐,C#也不破例,C#基本類庫中包括有一個定名空間(System.Text.RegularExpressions)和一系列可以充足施展規矩表達式威力的類(Regex、Match、Group等)。那末,甚麼是正則表達式,怎樣界說正則表達式呢?
正則表達式基本
甚麼是正則表達式
在編寫字符串的處置法式時,常常會有查找相符某些龐雜規矩的字符串的須要。正則表達式就是用於描寫這些規矩的對象。換句話說,正則表達式就是記載文本規矩的代碼。
平日,我們在應用WINDOWS查找文件時,會應用通配符(*和?)。假如你想查找某個目次下的一切Word文檔時,你便可以應用*.doc停止查找,在這裡,*就被說明為隨意率性字符串。和通配符相似,正則表達式也是用來停止文本婚配的對象,只不外比起通配符,它能更准確地描寫你的需求——固然,價值就是更龐雜。
一個簡略的例子——驗證德律風號碼
進修正則表達式的最好辦法是從例子開端,上面我們從驗證德律風號碼開端,一步一步的懂得正則表達式。
在我們國度,德律風號碼(如:0379-65624150)平日包括3到4為以0開首的區號和一個7或8為的號碼,中央平日以連字符'-'離隔。在這個例子中,起首我們要引見一個元字符\d,它用來婚配一個0到9的數字。這個正則表達式可以寫成:^0\d{2,3}-\d{7,8}$
我們來對他停止剖析,0婚配數字“0”,\d婚配一個數字,{2,3}表現反復2到3次,-只婚配”-”本身,接上去的\d異樣婚配一個數字,而 {7,8}則表現反復7到8次。固然,德律風號碼還可以寫成 (0379)65624150,這裡就交給讀者完成。
元字符
在下面的例子中,我們接觸到了一個元字符\d,正如你所想的,正則表達式還有許多像\d一樣的元字符,下表列出了一些經常使用的元字符:
表一經常使用的元字符
本義字符
假如你想查找元字符自己的話,好比你查找.,或許*,就湧現了成績:你沒方法指定它們,由於它們會被說明成其余意思。這時候你就得應用\來撤消這些字符的特別意義。是以,你應當應用\.和\*。固然,要查找\自己,你也得用\\.
例如:unibetter\.com婚配unibetter.com,C:\\Windows婚配C:\Windows。
限制符
限制符又叫反復描寫字符,表現一個字符要湧現的次數。好比我們在婚配德律風號碼時應用的{3,4}就表現湧現3到4次。經常使用的限制符有:
表二經常使用的限制符
正則表達式在法式設計中有側重要的地位,它常常被用於處置字符串信息,上面是正則經常使用的一些實例。
//驗證德律風號碼<br>public bool IsTelephone(string str_telephone) { return System.Text.RegularExpressions. Regex.IsMatch(str_telephone, @"^(\d{3,4}-)?\d{6,8}$"); } //驗證暗碼 public bool IsPassword(string str_password) { return System.Text.RegularExpressions. Regex.IsMatch(str_password, @"[A-Za-z]+[0-9]"); } //驗證郵政編碼 public bool IsPostalcode(string str_postalcode) { return System.Text.RegularExpressions. Regex.IsMatch(str_postalcode, @"^\d{6}$"); } //驗證手機號碼 public bool IsHandset(string str_handset) { return System.Text.RegularExpressions.Regex. IsMatch(str_handset, @"^[1][3-5]\d{9}$"); } //驗證身份證 public bool IsIDcard(string str_idcard) { return System.Text.RegularExpressions.Regex. IsMatch(str_idcard, @"(^\d{18}$)|(^\d{15}$)"); } //驗證小數格局 public bool IsDecimal(string str_decimal) { return System.Text.RegularExpressions.Regex. IsMatch(str_decimal, @"^[0-9]+\.[0-9]{2}$"); } //驗證月份 public bool IsMonth(string str_Month) { return System.Text.RegularExpressions.Regex. IsMatch(str_Month, @"^(0?[[1-9]|1[0-2])$"); } //驗證天數 public bool IsDay(string str_day) { return System.Text.RegularExpressions.Regex. IsMatch(str_day, @"^((0?[1-9])|((1|2)[0-9])|30|31)$"); } //驗證能否為數字 public bool IsNumber(string str_number) { return System.Text.RegularExpressions.Regex. IsMatch(str_number, @"^[0-9]*$"); } //驗證暗碼長度 public bool IsPasswLength(string str_Length) { return System.Text.RegularExpressions.Regex. IsMatch(str_Length, @"^\d{6,18}$"); } //驗證正整數 public bool IsIntNumber(string str_intNumber) { return System.Text.RegularExpressions.Regex. IsMatch(str_intNumber, @"^\+?[1-9][0-9]*$"); } //驗證年夜小寫 public bool IsUpChar(string str_UpChar) { return System.Text.RegularExpressions.Regex. IsMatch(str_UpChar, @"^[A-Z]+$"); } public bool IsLowerChar(string str_UpChar) { return System.Text.RegularExpressions.Regex. IsMatch(str_UpChar, @"^[a-z]+$"); } //驗證能否為字母 public bool IsLetter(string str_Letter) { return System.Text.RegularExpressions.Regex. IsMatch(str_Letter, @"^[A-Za-z]+$"); } //驗證能否為中文 public bool IsChinese(string str_chinese) { return System.Text.RegularExpressions.Regex. IsMatch(str_chinese, @"^[\u4e00-\u9fa5]{1,}$"); } //驗證郵箱 public bool IsEmail(string str_Email) { return System.Text.RegularExpressions.Regex.IsMatch(str_Email, @"^(([\w\.]+)@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))|((\w+\.?)+)@([a-zA-Z]{2,4}|[0-9]{1,3})(\.[a-zA-Z]{2,4}))$"); } //驗證IP public bool IPCheck(string IP) { string num = @"(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)"; return Regex.IsMatch(IP, ("^" + num + "\\." + num + "\\." + num + "\\." + num + "$")); } //驗證Url public bool IsUrl(string str_url) { return System.Text.RegularExpressions.Regex.IsMatch(str_url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"); }
固然如今許多驗證都由前端,然則控制正則表達式會讓你在法式開辟進程中疾速處理許多器械,特殊是在處置字符串的時刻,算是比擬周全的正則用法,假如有須要可接洽我,可直接運轉的源碼。
以上所述是小編給年夜家引見的C#中經常使用的正則表達式小結,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!