gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

ASP.NET 中的正則表達式

摘要:正則表達式是一種處理文本的有用工具。無論是驗證用戶輸入、搜索字符串內的模式、還是以各種有效方式重新設置文本格式,正則表達式都非常有用。下載本文的源代碼
引言
Microsoft®.NET Framework 對正則表達式的支持是一流的,甚至在 Microsoft® ASP.NET 中也有依賴正則表達式語言的控件。本文介紹了深入學習正則表達式的基礎知識和推薦內容。

本文主要面向對正則表達式知之甚少或沒有使用經驗,但卻熟悉 ASP.NET、可借助 .NET 編程的初學者。此外,希望本文連同 regular expression cheat sheet 成為有正則表達式使用經驗的開發者的手頭參考資料或進修資料。本文討論內容如下:

1.

正則表達式使用歷史簡介

2.

簡單表達式

3.

限定符

4.

元字符

5.

字符類

6.

預定義的集合元字符

7.

表達式示例詳細內容

8.

ASP.NET 中的驗證

9.

正則表達式 API

10.

免費工具

11.

高級主題概述

12.

小結和其他資源

通常,如果對本文或對正則表達式有疑問,請訪問 http://www.aspadvice.com/,通過 regex mailing list 提出問題。編寫此文時其中已有 350 多個訂戶參與。

ASP.NET 中的正則表達式返回頁首

正則表達式使用歷史簡介

正則表達式設計于五十年代,存在至今。正則表達式最初用于描述“正則集”,它們是一些神經生理學家研究的模式。正則表達式最早由數學家 Stephen Kleene 提出,最終由 Ken Thompson 在兩種非常流行的文本實用程序 qed 和 grep 中使用。Jeffrey Friedl 在其著作“Mastering Regular Expressions (2nd edition)”中對此作了進一步闡述。建議那些希望更多了解正則表達式理論和歷史的人看看這本書。

在最近的五十年中,正則表達式逐漸從模糊深奧的數學概念發展為在各類工具和軟件包中應用的主要功能。盡管數十年來很多 UNIX 工具都支持正則表達式,但僅僅是近十年來,它才在大部分 Windows 開發者工具包中得到體現。在 Microsoft® Visual Basic® 6 或 Microsoft® VBScript 中,即使情況理想,正則表達式仍難以使用。但隨著.NET Framework 的推行,正則表達式的支持發展到極點,所有 Microsoft 開發者和所有 .NET 語言都可以使用正則表達式。

那么,正則表達式究竟是什么呢?正則表達式是一種語言,它可以明確描述文本字符串中的模式。除了簡單描述這些模式之外,正則表達式引擎通常可用于遍歷匹配,并使用模式作為分隔符來將字符串解析為子字符串,或以智能方式替換文本或重新設置文本格式。正則表達式為解決與文本處理有關的許多常見任務提供了有效而簡捷的方式。

在討論正則表達式時,通常以正則表達式匹配(或不匹配)的文本為基礎分析正則表達式。本文(以及 System.Text.RegularExpressions 類)將在正則表達式交互操作中引用 3 個參與對象:正則表達式的“模式”、“輸入”字符串和字符串內的所有模式的“匹配”。

ASP.NET 中的正則表達式返回頁首

簡單表達式

最簡單的正則表達式大家都已熟悉,即文字字符串。特定的字符串可通過文字本身加以描述;像 foo 這樣的正則表達式模式可精確匹配輸入的字符串 foo。在本例中,也將匹配如下輸入:The food was quite tasty,如果希望精確匹配,這可能不是預期結果。

當然,使用正則表達式匹配等于它自身的精確字符串是沒有價值的實現,不能體現正則表達式的真正作用。假如不查找 foo,而是查找以字母 f 開頭的所有單詞,或所有 3 個字母的單詞,那該怎么辦?目前,這超出了文字字符串的合理范圍。我們需要更加深入地研究正則表達式。下面是一個文字表達式示例及一些匹配的輸入。

模式 輸入(匹配)

foo

foofood、foot、“There’s evil afoot.”

ASP.NET 中的正則表達式返回頁首

限定符

限定符提供了一種簡單方法,用于指定在模式中允許特定字符或字符集自身重復出現的次數。有 3 個非顯式限定符:

1.

*,描述“出現 0 或多次”。

2.

+,描述“出現 1 或多次”。

3.

?,描述“出現 0 或 1 次”。

限定符始終引用限定符前(左邊)的模式,通常是單個字符,除非使用括號創建模式組。下面是一些模式示例及匹配的輸入。

模式 輸入(匹配)

fo*

foofoe、food、fooot、“forget it”、funny、 puffy

fo+

foofoe、food、foot、“forget it”

fo?

foo、foe、food、foot、“forget it”、funny、puffy

除了指定給定模式準確出現 0 或 1 次之外,? 字符還可強制模式或子模式匹配數目最少的字符(如果匹配輸入字符串中的多個字符)。

除了非顯式限定符(一般叫做限定符,但為區別于下一組,故稱非顯式限定符)之外,還有顯式限定符。在模式出現次數方面,限定符的概念非常模糊。使用顯式限定符則可準確指定數字、范圍或數字集。顯式限定符位于所應用的模式的后邊,這一點與正則限定符一樣。顯式限定符使用花括號 {} 及其中的數字值表示模式出現次數的上下限。例如,x{5} 將準確匹配 5 個 x 字符 (xxxxx)。如果僅指定一個數字,則表示次數上限;如果數字后跟一個逗號,如 x{5,},表示匹配任何出現次數大于 4 的 x 字符。下面是一些模式示例及匹配的輸入。

模式 輸入(匹配)

ab{2}c

abbc、aaabbccc

ab{,2}c

acabcabbc、aabbcc

ab{2,3}c

abbcabbbc、aabbcc、aabbbcc

ASP.NET 中的正則表達式返回頁首

元字符

在正則表達式中,有一種意義特殊的構造,即元字符。目前已知的元字符有很多,如 *?+{} 字符。其他字符在正則表達式語言中都有特殊的含義。這些字符包括:$ ^ . [ ( | ) ]

.(句點或點)元字符是最簡單但最常用的一個字符。它可匹配任何單字符。如果要指定某些模式可包含任意組合的字符,使用句點非常有用,但一定要在特定長度范圍內。此外,我們知道表達式將對包含在較長字符串中的所有模式進行匹配,假如只需要精確匹配模式,又該怎么辦?這在驗證方案中經常出現,例如,要確保用戶輸入的郵政編碼或電話號碼的格式正確。使用 ^ 元字符可指定字符串(或行)的開始,使用 $ 元字符可指定字符串(或行)的結束。通過將這些字符添加到模式的開始和結束處,可強制模式僅匹配精確匹配的輸入字符串。如果 ^ 元字符用在方括號 [ ] 指定的字符類的開頭,也有特殊的含義。具體內容見下。

(反斜杠)元字符既可根據特殊含義“轉義”字符,也可指定預定義集合元字符的實例。同樣,具體內容見下。為了在正則表達式中包括文字樣式的元字符,必須使用反斜杠進行“轉義”。例如,如果要匹配以“c:”開始的字符串,可使用:^c:\。注意,要使用 ^ 元字符指出字符串必須以此模式作為開始,然后用反斜杠元字符轉義文字反斜杠。

|(管道)元字符用于交替指定,特別用于在模式中指定“此或彼”。例如,a|b 將匹配包含“a”或“b”的任何輸入內容,這與字符類 [ab] 非常類似。

最后,括號 ( ) 用于給模式分組。它允許使用限定符讓一個完整模式出現多次。為了便于閱讀,或分開匹配特定的輸入部分,可能允許分析或重新設置格式。
下面列出元字符的一些使用示例。

模式 輸入(匹配) 
.
 a、b、c、1、2、3 .*
 Abc, 123, 任意字符串, 無字符時也匹配  
^c:\
 c:windows、c:\\、c:foo.txt、c: 后跟任何其他內容 
abc$
 abc、123abc、以 abc 結束的任意字符串  
(abc){2,3}
 abcabc、abcabcabc 

ASP.NET 中的正則表達式字符類
字符類是正則表達式中的“迷你”語言,在方括號 [ ] 中定義。最簡單的字符類只不過是括號中的一個字符表,如 [aeiou]。在表達式中使用字符類時,可在模式的此位置使用其中任何一個字符(但只能使用一個字符,除非使用了限定符)。請注意,不能使用字符類定義單詞或模式,只能定義單個字符。

要指定任何數值數字,可以使用字符類 [0123456789]。但是,由于這樣使用字符不大方便,所以要通過在括號中使用連字符 來定義字符的范圍。連字符在字符類中有特殊的含義(不是在正則表達式中,因此,準確地說它不能叫正則表達式元字符),且僅在連字符不是第一個字符時,連字符才在字符類中有特殊含義。要使用連字符指定任何數值數字,可以使用 [0-9]。小寫字母也一樣,可以使用 [a-z],大寫字母可以使用 [A-Z]。連字符定義的范圍取決于使用的字符集。因此,字符在(例如)ASCII 或 Unicode 表中出現的順序確定了在范圍中包括的字符。如果需要在范圍中包括連字符,將它指定為第一個字符。例如:[-.?] 將匹配 4 個字符中任何一個字符(注意,最后的字符是個空格)。另請注意,正則表達式元字符在字符類中不做特殊處理,所以這些元字符不需要轉義。考慮到字符類是與其他正則表達式語言分開的一種語言,因此字符類有自己的規則和語法。

如果使用字符 ^ 作為字符類的第一個字符來否定此類,也可以匹配字符類成員以外的任何字符。因此,要匹配任何非元音字符,可以使用字符類 [^aAeEiIoOuU]。注意,如果要否定連字符,應將連字符作為字符類的第二個字符,如 [^-]。記住,^ 在字符類中的作用與它在正則表達式模式中的作用完全不同。
下面列出操作中使用的一些字符類。

模式 輸入(匹配) 
^b[aeiou]t$
 Bat、bet、bit、bot、but

^[0-9]{5}$
 11111, 12345, 99999

^c:\
 c:windows、c:\\、c:foo.txt、c: 后跟任何其他內容

abc$
 abc、123abc、以 abc 結束的任意字符串

(abc){2,3}
 abcabc、abcabcabc

^[^-][0-9]$
 0、1、2、… (不匹配 -0、-1、 -2 等)

在 .NET Framework 的下一版中,代碼名“Whidbey”作為一種新功能被添加到字符類中,稱作字符類差 (character class subtraction)。它的主要作用是,允許從一個字符類中減去另一個字符類,可提供更可讀的方式描述某些模式。該規范可通過以下地址訪問:

http://www.gotdotnet.com/team/clr/bcl/TechArticles/techarticles/Specs/Regex/

CharacterClassSubtraction.doc。它的語法類似 [a-z-[aeiou]],匹配所有的小寫輔音字母。

ASP.NET 中的正則表達式返回頁首

預定義的集合元字符

使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每個數值數字,或(更糟)使用 [0-9a-zA-Z]表示任何字母數字字符,還有一段相當漫長的過程。為了減輕處理這些常用但冗長模式的痛苦,事先定義了預定義元字符集合。正則表達式的不同實現定義了不同的預定義元字符集合,下面描述的預定義元字符集合在 .NET Framework 中得到 System.Text.RegularExpressions API 的支持。這些預定義元字符的標準語法是,在反斜杠 后跟一個或多個字符。多數預定義元字符只有一個字符,它們的使用很容易,是冗長字符類的理想替代字符。以下是兩個示例:d 匹配所有數值數字,w 匹配所有單詞字符(字母數字加下劃線)。例外情況是一些特定字符代碼匹配,此時必須指定所匹配字符的地址,如 u000D 將匹配 Unicode 回車符。下面列出一些最常用的字符類及其等效的元字符。

元字符 等效字符類

a

匹配鈴聲(警報);u0007

b

匹配字符類外的字邊界,它匹配退格字符,u0008

t

匹配制表符,u0009

r

匹配回車符,u000D

w

匹配垂直制表符,u000B

f

匹配換頁符,u000C

n

匹配新行,u000A

e

匹配轉義符,u001B

gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

国产日韩一区二区在线观看| 97xxxxx| 国产三级三级三级看三级| 97人人模人人爽人人澡| 天天干天天综合| 冲田杏梨av在线| 黄色三级视频在线| 欧美日韩精品区别| 制服丝袜综合网| 亚洲精品成人在线播放| 黄色影视在线观看| 欧美国产综合在线| 国产精品裸体瑜伽视频| 国产女女做受ⅹxx高潮| 日日噜噜噜噜久久久精品毛片| 欧美黄色性生活| 一起操在线视频| 中文字幕色呦呦| 人妻有码中文字幕| 色悠悠久久综合网| 国产三级中文字幕| 美脚丝袜脚交一区二区| 爆乳熟妇一区二区三区霸乳| 午夜剧场在线免费观看| 欧美黄色免费网址| 各处沟厕大尺度偷拍女厕嘘嘘| 国产v亚洲v天堂无码久久久| 婷婷中文字幕在线观看| 国产欧美123| 免费观看成人在线视频| 日韩不卡的av| 人妻熟女一二三区夜夜爱| 久久国产激情视频| 少妇av一区二区三区无码| 国产成人黄色网址| 奇米影视亚洲色图| 五月激情婷婷在线| 日韩欧美一区三区| 国产黑丝在线视频| 成人黄色一区二区| av日韩在线看| 亚洲视频第二页| 国内外成人激情视频| 国产一二三四五| 国产精品区在线| 波多野结衣家庭教师视频| 久久久天堂国产精品| av网站在线不卡| 久章草在线视频| 黄色大片在线免费看| 只有这里有精品| 日本在线一二三区| 亚洲男人天堂色| 欧美成人xxxxx| av在线免费观看国产| 日韩欧美色视频| 性欧美1819| 色婷婷狠狠18| 无人在线观看的免费高清视频| 成人在线观看你懂的| 久久免费一级片| 国产农村妇女精品久久| 91国产精品视频在线观看| 日韩黄色片视频| 99色精品视频| 免费无码av片在线观看| 91黄色小网站| 中文字幕国产传媒| 性生生活大片免费看视频| 九九九在线观看视频| 日韩不卡一二三| 丁香婷婷激情网| 国产精品v日韩精品v在线观看| 欧美日韩大尺度| caoporm在线视频| 好色先生视频污| 国产无限制自拍| 国产午夜福利视频在线观看| www.欧美日本| 男人午夜视频在线观看| 国产一级不卡视频| 亚洲中文字幕无码专区| 国产精品亚洲a| 夜夜夜夜夜夜操| 免费极品av一视觉盛宴| www.中文字幕在线| www.天天射.com| 国产精品久久成人免费观看| 久久久久久久久久网| aa免费在线观看| 天天综合成人网| 成年人看的毛片| 亚洲精品午夜在线观看| 日韩一级片一区二区| 欧美三级一级片| 国产精品999.| 欧美在线观看成人| 青春草在线视频免费观看| 妞干网在线观看视频| 亚洲欧洲日本精品| 欧美激情 国产精品| 爱爱爱爱免费视频| 毛片在线播放视频| 亚洲第一成肉网| 久久久噜噜噜www成人网| 黄瓜视频免费观看在线观看www| 久久这里只有精品18| 天天色天天综合网| 日本网站免费在线观看| 中文字幕一区二区三区四区五区人| 免费国产a级片| 免费成人深夜夜行网站视频| 日韩精品你懂的| 国产午夜大地久久| 欧美做暖暖视频| 高潮一区二区三区| 久久久久久久少妇| 欧美色图色综合| 欧美交换配乱吟粗大25p| 超碰在线免费av| 亚洲久久中文字幕| 热久久精品免费视频| 男女午夜激情视频| 凹凸国产熟女精品视频| 91免费国产精品| 一级特黄妇女高潮| www.-级毛片线天内射视视| 手机在线成人免费视频| 国产一区二区在线免费播放| 国产精品50p| 中文字幕乱码人妻综合二区三区| 国产av人人夜夜澡人人爽麻豆| 久久久成人精品一区二区三区| 天天综合天天添夜夜添狠狠添| www.久久91| 久久久福利影院| 成人高清在线观看视频| 97超碰免费观看| 国产精品va在线观看无码| 国产成人免费高清视频| 99热这里只有精品免费| 全黄性性激高免费视频| 91视频 -- 69xx| 韩国日本在线视频| 久久国产精品国产精品| 久久久精品视频国产| 少妇一晚三次一区二区三区| 日本午夜激情视频| avav在线看| 天天操狠狠操夜夜操| 日本精品福利视频| 免费欧美一级视频| 中文字幕22页| 青青青在线观看视频| 黄色av免费在线播放| 午夜视频在线网站| www污在线观看| 成人免费视频久久| 天堂а√在线中文在线| 久久久一本二本三本| 999在线观看| 大陆极品少妇内射aaaaa| 中文字幕在线观看日| 男人添女荫道口喷水视频| 国模杨依粉嫩蝴蝶150p| 爱爱爱视频网站| 久久婷婷五月综合色国产香蕉| 在线观看视频在线观看| 337p粉嫩大胆噜噜噜鲁| 天堂v在线视频| 日本在线视频www| 在线观看17c| 亚洲一区二区三区观看| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 色啦啦av综合| 又色又爽又高潮免费视频国产| 在线观看污视频| 久久久久久久久久一区| 日日橹狠狠爱欧美超碰| 99久久99久久精品| 亚洲最新免费视频| 男女污污的视频| 丝袜老师办公室里做好紧好爽| 懂色av粉嫩av蜜臀av| 日韩av在线中文| 成人黄色一区二区| 成人午夜视频免费在线观看| 精品久久久久久无码中文野结衣| 91精品999| wwwwwxxxx日本| 中国黄色片免费看| 91蝌蚪视频在线观看| 成人羞羞国产免费网站| 国模吧无码一区二区三区| 国产一线二线三线女| 台湾无码一区二区| 日韩精品免费一区| 日本精品久久久久久久久久| 蜜臀av性久久久久蜜臀av| 国产精品国三级国产av|