亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

正則表達式 c#

2020-03-16 21:23:34
字體:
來源:轉載
供稿:網友
首先,我們先看幾個實際的例子: 
1.    驗證輸入字符是否
javascript:
var ex = "^//w+$";
var re = new RegExp(ex,"i");
return re.test(str);

         VBScript

Dim regEx,flag,ex

ex = "^/w+$"

Set regEx = New RegExp

regEx.IgnoreCase = True 

regEx.Global = True 

regEx.Pattern = ex

flag = regEx.Test( str )

              C#

System.String ex = @"^/w+$";

              System.Text.RegularExpressions.Regex reg = new Regex( ex );                           
              bool flag = reg.IsMatch( str );

2.    驗證郵件格式

C#

System.String ex = @"^/w+@/w+/./w+$";

System.Text.RegularExpressions.Regex reg = new Regex( ex );

bool flag = reg.IsMatch( str );

3.    更改日期的格式(用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式)

C#

String MDYToDMY(String input) 

   {

      return Regex.Replace(input, 

         "//b(?//d{1,2})/(?//d{1,2})/(?//d{2,4})//b",

         "${day}-${month}-${year}");

   }

4.    從 URL 提取協議和端口號

C#

String Extension(String url) 

   {

      Regex r = new Regex(@"^(?/w+)://[^/]+?(?:/d+)?/",

         RegexOptions.Compiled);

      return r.Match(url).Result("${proto}${port}"); 

   }

這里的例子可能是我們在網頁開發中,通常會碰到的一些正則表達式,尤其在第一個例子中,給出了使用javascript,vbScript,C#等不同語言的實現方式,大家不難看出,對于不同的語言來說,正則表達式沒有區別,只是正則表達式的實現類不同而已。而如何發揮正則表達式的公用,也要看實現類的支持。

(摘自msdn: Microsoft .NET 框架 SDK 提供大量的正則表達式工具,使您能夠高效地創建、比較和修改字符串,以及迅速地分析大量文本和數據以搜索、移除和替換文本模式。ms-help://MS.VSCC/MS.MSDNVS.2052/cpgenref/html/cpconregularexpressionslanguageelements.htm)

下面我們逐個來分析這些例子:

1-2,這兩個例子很簡單,只是簡單的驗證字符串是否符合正則表達式規定的格式,其中使用的語法,在第一篇文章中都已經介紹過了,這里做一下簡單的描述。

第1個例子的表達式:  ^/w+$

^ -- 表示限定匹配開始于字符串的開始

         /w – 表示匹配英文字符

         + -- 表示匹配字符出現1次或多次

         $ -- 表示匹配字符到字符串結尾處結束

         驗證形如asgasdfs的字符串

第2個例子的表達式:  ^/w+@/w+./w+$

^ -- 表示限定匹配開始于字符串的開始

/w – 表示匹配英文字符

+ -- 表示匹配字符出現1次或多次

@ -- 匹配普通字符@

/. – 匹配普通字符.(注意.為特殊字符,因此要加上/轉譯)

$ -- 表示匹配字符到字符串結尾處結束

驗證形如dragontt@sina.com的郵件格式

 

 

     第3 個例子中,使用了替換,因此,我們還是先來看看正則表達式中替換的定義:

(ms-help://MS.VSCC/MS.MSDNVS.2052/cpgenref/html/cpconsubstitutions.htm)

替換
字符
含義

$123
替換由組號 123(十進制)匹配的最后一個子字符串。

${name}
替換由 (? ) 組匹配的最后一個子字符串。

$$
替換單個“$”字符。

$&
替換完全匹配本身的一個副本。

$`
替換匹配前的輸入字符串的所有文本。

$'
替換匹配后的輸入字符串的所有文本。

$+
替換最后捕獲的組。

$_
替換整個輸入字符串。



分組構造
(ms-help://MS.VSCC/MS.MSDNVS.2052/cpgenref/html/cpcongroupingconstructs.htm)

分組構造
定義

( )
捕獲匹配的子字符串(或非捕獲組;有關更多信息,請參閱正則表達式選項中的 ExplicitCapture 選項。)使用 () 的捕獲根據左括號的順序從 1 開始自動編號。捕獲元素編號為零的第一個捕獲是由整個正則表達式模式匹配的文本。

(?<name> )
將匹配的子字符串捕獲到一個組名稱或編號名稱中。用于 name 的字符串不能包含任何標點符號,并且不能以數字開頭??梢允褂脝我柼娲饫ㄌ?,例如 (?'name')。

(?<name1-name2> )
平衡組定義。刪除先前定義的 name2 組的定義并在 name1 組中存儲先前定義的 name2 組和當前組之間的間隔。如果未定義 name2 組,則匹配將回溯。由于刪除 name2 的最后一個定義會顯示 name2 的先前定義,因此該構造允許將 name2 組的捕獲堆棧用作計數器以跟蹤嵌套構造(如括號)。在此構造中,name1 是可選的??梢允褂脝我柼娲饫ㄌ?,例如 (?'name1-name2')。

(?: )
非捕獲組。

(?imnsx-imnsx: )
應用或禁用子表達式中指定的選項。例如,(?i-s: ) 將打開不區分大小寫并禁用單行模式。有關更多信息,請參閱正則表達式選項。

(?= )
零寬度正預測先行斷言。僅當子表達式在此位置的右側匹配時才繼續匹配。例如,/w+(?=/d) 與后跟數字的單詞匹配,而不與該數字匹配。此構造不會回溯。

(?! )
零寬度負預測先行斷言。僅當子表達式不在此位置的右側匹配時才繼續匹配。例如,/b(?!un)/w+/b 與不以 un 開頭的單詞匹配。

(?<= )
零寬度正回顧后發斷言。僅當子表達式在此位置的左側匹配時才繼續匹配。例如,(?<=19)99 與跟在 19 后面的 99 的實例匹配。此構造不會回溯。

(?
零寬度負回顧后發斷言。僅當子表達式不在此位置的左側匹配時才繼續匹配。

(?> )
非回溯子表達式(也稱為貪婪子表達式)。該子表達式僅完全匹配一次,然后就不會逐段參與回溯了。(也就是說,該子表達式僅與可由該子表達式單獨匹配的字符串匹配。)



 

我們還是先簡單的了解一下這兩個概念:

分組構造:

最基本的構造方式就是(),在左右括號中括起來的部分,就是一個分組;

更進一步的分組就是形如:(?<name> )的分組方式,這種方式與第一種方式的不同點,就是對分組的部分進行了命名,這樣就可以通過該組的命名來獲取信息;

(還有形如(?= )等等的分組構造,我們這篇的例子中也沒有使用到,下次我們在來介紹)

替換:

       上面提到了兩種基本的構造分組方式()以及(?<name> ),通過這兩種分組方式,我們可以得到形如$1,${name}的匹配結果。

 

       這樣說,可能概念上還是有些模糊,我們還是結合上面的例子來說:

第三個例子的正則表達式為://b(?//d{1,2})/(?//d{1,2})/(?//d{2,4})//b

(解釋一下,為什么這里都是//一起用:這里是C#的例子,在C#語言中/是轉譯字符,要想字符串中的/不轉譯,就需要使用//或者在整個字符串的開始加上@標記,即上面等價與

@”/b(?/d{1,2})/(?/d{1,2})/(?/d{2,4}/b”)

/b --  是一種特殊情況。在正則表達式中,除了在 [] 字符類中表示退格符以外,/b 表示字邊界(在 /w 和 /W 字符之間)。在替換模式中,/b 始終表示退格符

(?/d{1,2}) – 構造一個名為month的分組,這個分組匹配一個長度為1-2的數字

/ -- 匹配普通的/字符

(?/d{1,2}) --構造一個名為day的分組,這個分組匹配一個長度為1-2的數字

/ -- 匹配普通的/字符

(?/d{2,4}/b”) --構造一個名為year的分組,這個分組匹配一個長度為2-4的數字

 

這里還不能夠看出這些分組的作用,我們接著看這一句

${day}-${month}-${year}

${day} – 獲得上面構造的名為day的分組匹配后的信息

- -- 普通的-字符

${month} --獲得上面構造的名為month的分組匹配后的信息

- -- 普通的-字符

${year} --獲得上面構造的名為year的分組匹配后的信息

 

舉例來說:

將形如04/02/2003的日期使用例3種的方法替換

(?/d{1,2}) 分組將匹配到04由${month}得到這個匹配值

(?/d{1,2}) 分組將匹配到02由${day}得到這個匹配值

(?/d{1,2}) 分組將匹配到2003由${year}得到這個匹配值

了解了這個例子后,我們在來看第4個例子就很簡單了。

 

第4個例子的正則

^(?/w+)://[^/]+?(?:/d+)?/

^ -- 表示限定匹配開始于字符串的開始

(?/w+) – 構造一個名為proto的分組,匹配一個或多個字母

: -- 普通的:字符

// -- 匹配兩個/字符

[^/] – 表示這里不允許是/字符

+? – 表示指定盡可能少地使用重復但至少使用一次匹配

(?:/d+) – 構造一個名為port的分組,匹配形如:2134(冒號+一個或多個數字)

? – 表示匹配字符出現0次或1次

/ -- 匹配/字符

 

最后通過${proto}${port}來獲取兩個分組構造的匹配內容

(有關Regex對象的用法,參考

ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemTextRegularExpressionsRegexMembersTopic.htm) 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图av在线| 韩国日本不卡在线| 亚洲国产又黄又爽女人高潮的| 亚洲春色另类小说| 性欧美xxxx交| 亚洲综合色激情五月| 欧美福利小视频| 国产亚洲一级高清| 青草青草久热精品视频在线网站| 久久久久国产精品www| 国产精品wwwwww| 成人欧美一区二区三区在线| 亚洲美女精品久久| 欧美电影免费在线观看| 欧美激情在线播放| 欧美日韩中国免费专区在线看| 欧美亚洲视频在线观看| 久久久久久久成人| 国产一区二区三区在线| 97热在线精品视频在线观看| 国产精品流白浆视频| 国产精品视频网址| 亚洲国产日韩欧美在线99| 亚洲精品福利资源站| 青青草国产精品一区二区| 国产精品第一区| 亚洲国产精品人人爽夜夜爽| 亚洲国产美女精品久久久久∴| 国产精品视频大全| 亚洲精品v天堂中文字幕| 一区二区三区久久精品| 国产免费一区二区三区香蕉精| 久久久精品电影| 国产这里只有精品| 538国产精品视频一区二区| 日韩在线播放av| 亚洲激情在线视频| 欧美成人网在线| 日韩在线观看免费高清完整版| 欧美成在线观看| 久久免费观看视频| 欧洲永久精品大片ww免费漫画| 丝袜一区二区三区| 国产精品久久久久久久久久东京| 日韩在线视频播放| 欧美大全免费观看电视剧大泉洋| 欧美午夜精品久久久久久人妖| 91国内揄拍国内精品对白| 久久99国产综合精品女同| 国产精品极品尤物在线观看| 国产日韩精品在线观看| 欧美黑人一区二区三区| 美女黄色丝袜一区| 欧美成人自拍视频| 亚洲成人av资源网| 欧美日韩色婷婷| 久久久久女教师免费一区| 性色av一区二区三区| 久久av中文字幕| 国产日韩av高清| 中文字幕精品久久| 久久成人精品视频| 欧美日韩中国免费专区在线看| 国产精品美女免费视频| 亚洲美女视频网| 欧美在线视频观看免费网站| 国产精品精品久久久久久| 欧美一级成年大片在线观看| 中文字幕日韩欧美在线| 欧美裸体xxxx| 久久精品2019中文字幕| 国产一区二区动漫| 91中文字幕一区| 亚洲黄色www网站| 欧美亚洲另类制服自拍| 欧美天堂在线观看| 亚洲国产精彩中文乱码av在线播放| 一区二区三区无码高清视频| 色先锋久久影院av| 日韩欧美在线中文字幕| 国产精品视频最多的网站| 国模极品一区二区三区| 欧美日本高清一区| 亚洲精品日韩久久久| 国产精品男女猛烈高潮激情| 国产欧美一区二区三区视频| 国产精品美女免费| 国产不卡视频在线| 91亚洲精品久久久| 国产精品av电影| 欧美专区日韩视频| 精品女厕一区二区三区| 丁香五六月婷婷久久激情| 一本大道久久加勒比香蕉| 97成人精品区在线播放| 国产一区二区黄| 国产精品一久久香蕉国产线看观看| 自拍偷拍亚洲在线| 在线视频国产日韩| 国产91色在线| 亚洲欧美日韩网| 国模私拍一区二区三区| 日韩一区二区精品视频| 欧美日韩国产一区二区| 亚洲第一黄色网| 亚洲欧美日韩一区二区三区在线| 51久久精品夜色国产麻豆| 热99精品里视频精品| 亚洲第一精品夜夜躁人人爽| 午夜精品一区二区三区在线视| 不卡在线观看电视剧完整版| 成人写真视频福利网| 一区国产精品视频| 97精品伊人久久久大香线蕉| 亚洲精品www| 欧美大片免费观看在线观看网站推荐| 992tv在线成人免费观看| 成人免费自拍视频| 久久久精品一区二区| 国产日韩在线亚洲字幕中文| 国产成人欧美在线观看| 久久亚洲精品国产亚洲老地址| 亚洲精品www久久久久久广东| 亲子乱一区二区三区电影| 亚洲第一综合天堂另类专| 亚洲性视频网站| 欧美乱大交做爰xxxⅹ性3| www.xxxx欧美| 91日本在线观看| 日韩亚洲精品视频| 成人动漫网站在线观看| 欧美在线视频在线播放完整版免费观看| 精品成人在线视频| 亚洲欧美制服丝袜| 亚洲新中文字幕| 欧美在线视频在线播放完整版免费观看| 久久全球大尺度高清视频| 成人综合网网址| 精品国产美女在线| 日韩av片永久免费网站| 91高清免费在线观看| 日韩av网站电影| 欧美激情精品久久久久久黑人| 超碰日本道色综合久久综合| 国产主播欧美精品| 久久精品电影网| 国产精品激情av电影在线观看| 亚洲精品成a人在线观看| 亚洲综合成人婷婷小说| 欧美色视频日本高清在线观看| 欧美视频中文字幕在线| 日韩av免费在线| 国产精品日韩欧美综合| 国产a∨精品一区二区三区不卡| 亚洲欧美日韩爽爽影院| 国内精品久久久久伊人av| 国产美女搞久久| 国产一区二区三区久久精品| 国产精品免费久久久久影院| 91美女片黄在线观看游戏| 国产精品日韩久久久久| 欧美高清在线视频观看不卡| 尤物九九久久国产精品的特点| 成人免费看片视频|