C#中常用的正則表達(dá)式實(shí)例
目前為止,許多編程語言和工具都包含對正則表達(dá)式的支持,C#也不例外,C#基礎(chǔ)類庫中包含有一個命名空間(System.Text.RegularExpressions)和一系列可以充分發(fā)揮規(guī)則表達(dá)式威力的類(Regex、Match、Group等)。那么,什么是正則表達(dá)式,怎么定義正則表達(dá)式呢?
正則表達(dá)式基礎(chǔ)
什么是正則表達(dá)式
在編寫字符串的處理程序時,經(jīng)常會有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說,正則表達(dá)式就是記錄文本規(guī)則的代碼。
通常,我們在使用WINDOWS查找文件時,會使用通配符(*和?)。如果你想查找某個目錄下的所有Word文檔時,你就可以使用*.doc進(jìn)行查找,在這里,*就被解釋為任意字符串。和通配符類似,正則表達(dá)式也是用來進(jìn)行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當(dāng)然,代價就是更復(fù)雜。
一個簡單的例子——驗(yàn)證電話號碼
學(xué)習(xí)正則表達(dá)式的最好方法是從例子開始,下面我們從驗(yàn)證電話號碼開始,一步一步的了解正則表達(dá)式。
在我們國家,電話號碼(如:0379-65624150)通常包含3到4為以0開頭的區(qū)號和一個7或8為的號碼,中間通常以連字符'-'隔開。在這個例子中,首先我們要介紹一個元字符\d,它用來匹配一個0到9的數(shù)字。這個正則表達(dá)式可以寫成:^0\d{2,3}-\d{7,8}$
我們來對他進(jìn)行分析,0匹配數(shù)字“0”,\d匹配一個數(shù)字,{2,3}表示重復(fù)2到3次,-只匹配”-”自身,接下來的\d同樣匹配一個數(shù)字,而 {7,8}則表示重復(fù)7到8次。當(dāng)然,電話號碼還可以寫成 (0379)65624150,這里就交給讀者完成。
元字符
在上面的例子中,我們接觸到了一個元字符\d,正如你所想的,正則表達(dá)式還有很多像\d一樣的元字符,下表列出了一些常用的元字符:
表一常用的元字符
轉(zhuǎn)義字符
如果你想查找元字符本身的話,比如你查找.,或者*,就出現(xiàn)了問題:你沒辦法指定它們,因?yàn)樗鼈儠唤忉尦蓜e的意思。這時你就得使用\來取消這些字符的特殊意義。因此,你應(yīng)該使用\.和\*。當(dāng)然,要查找\本身,你也得用\\.
例如:unibetter\.com匹配unibetter.com,C:\\Windows匹配C:\Windows。
限定符
限定符又叫重復(fù)描述字符,表示一個字符要出現(xiàn)的次數(shù)。比如我們在匹配電話號碼時使用的{3,4}就表示出現(xiàn)3到4次。常用的限定符有:
表二常用的限定符
正則表達(dá)式在程序設(shè)計(jì)中有著重要的位置,它經(jīng)常被用于處理字符串信息,下面是正則常用的一些實(shí)例。
//驗(yàn)證電話號碼<br>public bool IsTelephone(string str_telephone) { return System.Text.RegularExpressions. Regex.IsMatch(str_telephone, @"^(\d{3,4}-)?\d{6,8}$"); } //驗(yàn)證密碼 public bool IsPassword(string str_password) { return System.Text.RegularExpressions. Regex.IsMatch(str_password, @"[A-Za-z]+[0-9]"); } //驗(yàn)證郵政編碼 public bool IsPostalcode(string str_postalcode) { return System.Text.RegularExpressions. Regex.IsMatch(str_postalcode, @"^\d{6}$"); } //驗(yàn)證手機(jī)號碼 public bool IsHandset(string str_handset) { return System.Text.RegularExpressions.Regex. IsMatch(str_handset, @"^[1][3-5]\d{9}$"); } //驗(yàn)證身份證 public bool IsIDcard(string str_idcard) { return System.Text.RegularExpressions.Regex. IsMatch(str_idcard, @"(^\d{18}$)|(^\d{15}$)"); } //驗(yàn)證小數(shù)格式 public bool IsDecimal(string str_decimal) { return System.Text.RegularExpressions.Regex. IsMatch(str_decimal, @"^[0-9]+\.[0-9]{2}$"); } //驗(yàn)證月份 public bool IsMonth(string str_Month) { return System.Text.RegularExpressions.Regex. IsMatch(str_Month, @"^(0?[[1-9]|1[0-2])$"); } //驗(yàn)證天數(shù) public bool IsDay(string str_day) { return System.Text.RegularExpressions.Regex. IsMatch(str_day, @"^((0?[1-9])|((1|2)[0-9])|30|31)$"); } //驗(yàn)證是否為數(shù)字 public bool IsNumber(string str_number) { return System.Text.RegularExpressions.Regex. IsMatch(str_number, @"^[0-9]*$"); } //驗(yàn)證密碼長度 public bool IsPasswLength(string str_Length) { return System.Text.RegularExpressions.Regex. IsMatch(str_Length, @"^\d{6,18}$"); } //驗(yàn)證正整數(shù) public bool IsIntNumber(string str_intNumber) { return System.Text.RegularExpressions.Regex. IsMatch(str_intNumber, @"^\+?[1-9][0-9]*$"); } //驗(yàn)證大小寫 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]+$"); } //驗(yàn)證是否為字母 public bool IsLetter(string str_Letter) { return System.Text.RegularExpressions.Regex. IsMatch(str_Letter, @"^[A-Za-z]+$"); } //驗(yàn)證是否為中文 public bool IsChinese(string str_chinese) { return System.Text.RegularExpressions.Regex. IsMatch(str_chinese, @"^[\u4e00-\u9fa5]{1,}$"); } //驗(yàn)證郵箱 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}))$"); } //驗(yàn)證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 + "$")); } //驗(yàn)證Url public bool IsUrl(string str_url) { return System.Text.RegularExpressions.Regex.IsMatch(str_url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"); }
雖然現(xiàn)在很多驗(yàn)證都由前端,但是掌握正則表達(dá)式會讓你在程序開發(fā)過程中快速解決很多東西,特別是在處理字符串的時候,算是比較全面的正則用法,如果有需要可聯(lián)系我,可直接運(yùn)行的源碼。
以上所述是小編給大家介紹的C#中常用的正則表達(dá)式小結(jié),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對我們網(wǎng)站的支持!
上一篇:基于c#用Socket做一個局域網(wǎng)聊天工具
欄 目:C#教程
下一篇:C#使用Shader實(shí)現(xiàn)夜幕降臨倒計(jì)時的效果
本文標(biāo)題:C#中常用的正則表達(dá)式實(shí)例
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6217.html
您可能感興趣的文章
- 01-10C#實(shí)現(xiàn)讀取被進(jìn)程占用的文件實(shí)現(xiàn)方法
- 01-10C#正則表達(dá)式的6個簡單例子
- 01-10C#中的正則表達(dá)式介紹
- 01-10C#中比較常用的DateTime結(jié)構(gòu)的使用方法
- 01-10C#使用正則表達(dá)式實(shí)現(xiàn)首字母轉(zhuǎn)大寫的方法
- 01-10輕松學(xué)習(xí)C#的正則表達(dá)式
- 01-10詳解C#正則表達(dá)式Regex常用匹配
- 01-10C#通過正則表達(dá)式實(shí)現(xiàn)提取網(wǎng)頁中的圖片
- 01-10C#正則表達(dá)式Regex類的常用匹配
- 01-10常用C#正則表達(dá)式匯總介紹


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法