<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
正規表示式是一種匹配輸入文字的模式,.Net 框架提供了允許這種匹配的正規表示式引擎,模式由一個或多個字元、運運算元和結構組成。下面列出了用於定義正規表示式的各種類別的常用字元、運運算元和結構。
正規表示式中的反斜槓字元()指示其後跟的字元是特殊字元,或應按原義解釋該字元。
跳脫字元 | 描述 | 模式 | 匹配 |
---|---|---|---|
a | 與報警 (bell) 符 u0007 匹配。 | a | "Warning!" + 'u0007' 中的 "u0007" |
b | 在字元類中,與退格鍵 u0008 匹配。 | [b]{3,} | "bbbb" 中的 "bbbb" |
t | 與製表符 u0009 匹配。 | (w+)t | "NametAddrt" 中的 "Namet" 和 "Addrt" |
r | 與回車符 u000D 匹配。(r 與換行符 n 不是等效的。) | rn(w+) | "rnHellonWorld." 中的 "rnHello" |
v | 與垂直製表符 u000B 匹配。 | [v]{2,} | "vvv" 中的 "vvv" |
f | 與換頁符 u000C 匹配。 | [f]{2,} | "fff" 中的 "fff" |
n | 與換行符 u000A 匹配。 | rn(w+) | "rnHellonWorld." 中的 "rnHello" |
e | 與跳脫符 u001B 匹配。 | e | "x001B" 中的 "x001B" |
nnn | 使用八進位製表示形式指定一個字元(nnn 由二到三位數位組成)。 | w 40w | "a bc d" 中的 "a b" 和 "c d" |
x nn | 使用十六進位製表示形式指定字元(nn 恰好由兩位數位組成)。 | wx20w | "a bc d" 中的 "a b" 和 "c d" |
c X c x | 匹配 X 或 x 指定的 ASCII 控制元件字元,其中 X 或 x 是控制元件字元的字母。 | cC | "x0003" 中的 "x0003" (Ctrl-C) |
u nnnn | 使用十六進位製表示形式匹配一個 Unicode 字元(由 nnnn 表示的四位數)。 | wu0020w | "a bc d" 中的 "a b" 和 "c d" |
在後面帶有不識別的跳脫字元時,與該字元匹配。 | d+[+-x*]d+d+[+-x*d+ | "(2+2) * 3*9" 中的 "2+2" 和 "3*9" |
字元類與一組字元中的任何一個字元匹配。
字元類 | 描述 | 模式 | 匹配 |
---|---|---|---|
[character_group] | 匹配 character_group 中的任何單個字元。 預設情況下,匹配區分大小寫。 | [mn] | "mat" 中的 "m","moon" 中的 "m" 和 "n" |
[^character_group] | 非:與不在 character_group 中的任何單個字元匹配。 預設情況下,character_group 中的字元區分大小寫。 | [^aei] | "avail" 中的 "v" 和 "l" |
[ first - last ] | 字元範圍:與從 first 到 last 的範圍中的任何單個字元匹配。 | [b-d] | [b-d]irds 可以匹配 Birds、 Cirds、 Dirds |
. | 萬用字元:與除 n 之外的任何單個字元匹配。 若要匹配原意句點字元(. 或 u002E),您必須在該字元前面加上跳脫符 (.)。 | a.e | "have" 中的 "ave", "mate" 中的 "ate" |
p{ name } | 與 name 指定的 Unicode 通用類別或命名塊中的任何單個字元匹配。 | p{Lu} | "City Lights" 中的 "C" 和 "L" |
P{ name } | 與不在 name 指定的 Unicode 通用類別或命名塊中的任何單個字元匹配。 | P{Lu} | "City" 中的 "i"、 "t" 和 "y" |
w | 與任何單詞字元匹配。 | w | "Room#1" 中的 "R"、 "o"、 "m" 和 "1" |
W | 與任何非單詞字元匹配。 | W | "Room#1" 中的 "#" |
s | 與任何空白字元匹配。 | ws | "ID A1.3" 中的 "D " |
S | 與任何非空白字元匹配。 | sS | "int __ctr" 中的 " _" |
d | 與任何十進位制數位匹配。 | d | "4 = IV" 中的 "4" |
D | 匹配不是十進位制數的任意字元。 | D | "4 = IV" 中的 " "、 "="、 " "、 "I" 和 "V" |
分組構造描述了正規表示式的子表示式,通常用於捕獲輸入字串的子字串。
分組構造 | 描述 | 模式 | 匹配 |
---|---|---|---|
( subexpression ) | 捕獲匹配的子表示式並將其分配到一個從零開始的序號中。 | (w)1 | "deep" 中的 "ee" |
(?< name >subexpression) | 將匹配的子表示式捕獲到一個命名組中。 | (?< double>w)k< double> | "deep" 中的 "ee" |
(?< name1 -name2 >subexpression) | 定義平衡組定義。 | (((?'Open'()[^()]*)+((?'Close-Open'))[^()]*)+)*(?(Open)(?!))$ | "3+2^((1-3)*(3-1))" 中的 "((1-3)*(3-1))" |
(?: subexpression) | 定義非捕獲組。 | Write(?:Line)? | "Console.WriteLine()" 中的 "WriteLine" |
(?imnsx-imnsx:subexpression) | 應用或禁用 subexpression 中指定的選項。 | Ad{2}(?i:w+)b | "A12xl A12XL a12xl" 中的 "A12xl" 和 "A12XL" |
(?= subexpression) | 零寬度正預測先行斷言。 | w+(?=.) | "He is. The dog ran. The sun is out." 中的 "is"、 "ran" 和 "out" |
(?! subexpression) | 零寬度負預測先行斷言。 | b(?!un)w+b | "unsure sure unity used" 中的 "sure" 和 "used" |
(?<=subexpression) | 零寬度正回顧後發斷言。 | (?<=19)d{2}b | "1851 1999 1950 1905 2003" 中的 "99"、"50"和 "05" |
(?<! subexpression) | 零寬度負回顧後發斷言。 | (?<!wo)manb | "Hi woman Hi man" 中的 "man" |
(?> subexpression) | 非回溯(也稱為"貪婪")子表示式。 | [13579](?>A+B+) | "1ABB 3ABBC 5AB 5AC" 中的 "1ABB"、 "3ABB" 和 "5AB" |
限定符指定在輸入字串中必須存在上一個元素(可以是字元、組或字元類)的多少個範例才能出現匹配項。 限定符包括下表中列出的語言元素。
限定符 | 描述 | 模式 | 匹配 |
---|---|---|---|
* | 匹配上一個元素零次或多次。 | d*.d | ".0"、 "19.9"、 "219.9" |
+ | 匹配上一個元素一次或多次。 | "be+" | "been" 中的 "bee", "bent" 中的 "be" |
? | 匹配上一個元素零次或一次。 | "rai?n" | "ran"、 "rain" |
{ n } | 匹配上一個元素恰好 n 次。 | ",d{3}" | "1,043.6" 中的 ",043", "9,876,543,210" 中的 ",876"、 ",543" 和 ",210" |
{ n ,} | 匹配上一個元素至少 n 次。 | "d{2,}" | "166"、 "29"、 "1930" |
{ n , m } | 匹配上一個元素至少 n 次,但不多於 m 次。 | "d{3,5}" | "166", "17668", "193024" 中的 "19302" |
*? | 匹配上一個元素零次或多次,但次數儘可能少。 | d*?.d | ".0"、 "19.9"、 "219.9" |
+? | 匹配上一個元素一次或多次,但次數儘可能少。 | "be+?" | "been" 中的 "be", "bent" 中的 "be" |
?? | 匹配上一個元素零次或一次,但次數儘可能少。 | "rai??n" | "ran"、 "rain" |
{ n }? | 匹配前導元素恰好 n 次。 | ",d{3}?" | "1,043.6" 中的 ",043", "9,876,543,210" 中的 ",876"、 ",543" 和 ",210" |
{ n ,}? | 匹配上一個元素至少 n 次,但次數儘可能少。 | "d{2,}?" | "166"、 "29" 和 "1930" |
{ n , m }? | 匹配上一個元素的次數介於 n 和 m 之間,但次數儘可能少。 | "d{3,5}?" | "166", "17668", "193024" 中的 "193" 和 "024" |
驗證數位:^[0-9]*$ 驗證n位的數位:^d{n}$ 驗證至少n位數位:^d{n,}$ 驗證m-n位的數位:^d{m,n}$ 驗證零和非零開頭的數位:^(0|[1-9][0-9]*)$ 驗證有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$ 驗證有1-3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$ 驗證整數和一位小數:^[0-9]+(.[1-9]{1})?$ 驗證非零的正整數:^+?[1-9][0-9]*$ 驗證非零的負整數:^-[1-9][0-9]*$ 驗證非負整數(正整數 + 0) ^d+$ 驗證非正整數(負整數 + 0) ^((-d+)|(0+))$ 驗證長度為3的字元:^.{3}$ 驗證由26個英文字母組成的字串:^[A-Za-z]+$ 驗證由26個大寫英文字母組成的字串:^[A-Z]+$ 驗證由26個小寫英文字母組成的字串:^[a-z]+$ 驗證由數位和26個英文字母組成的字串:^[A-Za-z0-9]+$ 驗證由數位、26個英文字母或者下劃線組成的字串:^w+$ 驗證使用者密碼:^[a-zA-Z]w{5,17}$ 正確格式為:以字母開頭,長度在6-18之間,只能包含字元、數位和下劃線。 驗證是否含有 ^%&',;=?$" 等字元:[^%&',;=?$x22]+ 驗證漢字:^[u4e00-u9fa5]+$ 驗證Email地址:^(w)+(.w+)*@(w)+((.w{2,3}){1,3})$ 驗證InternetURL:^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$ 驗證電話號碼:^((d{3,4})|d{3,4}-)?d{7,8}$:--正確格式為:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。 驗證身份證號(15位或18位元數位):^d{15}|d{18}|d{17}X$ 驗證一年的12個月:^(0?[1-9]|1[0-2])$ 正確格式為:「01」-「09」和「1」「12」 驗證一個月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正確格式為:01、09和1、31。 整數:^-?d+$ 非負浮點數(正浮點數 + 0):^d+(.d+)?$ 正浮點數 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$ 非正浮點數(負浮點數 + 0) ^((-d+(.d+)?)|(0+(.0+)?))$ 負浮點數 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮點數 ^(-?d+)(.d+)? 0-100之間的數,小數點後面最多兩位^(?:(?!0d)d{1,2}(?:.d{1,2})?|100(?:.0{1,2})?) 驗證html標記 /<[^>]+>/g
是否包含a、b、c
static void Main(string[] args) { //判斷是否包含a、b、c三個字元 string str = Console.ReadLine(); //把使用者輸入的字元存入 str string regex = @"[abc]"; //C#中 加@"[abc]" 為正規表示式基本寫法 bool isMatch = Regex.IsMatch(str, regex); //比較: IsMatch(需要判斷的字元,正則):返回bool值 Console.WriteLine(isMatch ? "Match [abc]" : "not Match[abc]"); //輸出結果 Console.WriteLine(); }
替換正則開頭或結尾
static void Main(string[] args) { StringBuilder s = new StringBuilder("www.baidu.com", 50); //宣告一個字串,容量50 //news=正則類.替換字串(需要處理的字串,正則,新增的字串)—— 把符合正則情況的位置,替換為 後邊字串 //替換開頭 string news = Regex.Replace(s.ToString(), "^", "網址:"); //^ :代表開頭 Console.WriteLine(news); //輸出 //替換結尾 news = Regex.Replace(s.ToString(), "$", "結尾"); //$:代表結尾 Console.WriteLine(news); Console.ReadLine(); }
匹配以任意除字母、下劃線、數位以外的字元開頭和結尾的
static void Main(string[] args) { string s = Console.ReadLine(); //s接收使用者輸入 string regex = @"^W*$"; //正則:以任意除字母、下劃線、數位以外的字元開頭和結尾的 bool isMatch = Regex.IsMatch(s, regex); //匹配使用者輸入,是否滿足正則條件 Console.WriteLine(isMatch ? "滿足" : "不滿足"); //三目運算 Console.WriteLine(); }
替換字元
static void Main(string[] args) { string s = "abcdef"; string regex = @"[^bde]"; //[^bde]代表了除 b、d、e之外的所有字元,任意一個字元 string newReplace = Regex.Replace(s, regex, "1"); //匹配 s 中,除了bde之外的字元,替換為 1 Console.WriteLine(newReplace); Console.WriteLine(); }
匹配QQ號
static void Main(string[] args) { string qq = Console.ReadLine(); //等待使用者輸入 string regex = @"^d{5,11}$"; //正則:開頭結尾都是數位,並且5-11位都為數位 bool isqq = Regex.IsMatch(qq, regex); //判斷並返回布林值 Console.WriteLine(isqq ? "是QQ號" : "不是QQ號"); //三目運算 Console.WriteLine(); }
驗證IP地址
static void Main(string[] args) { string regex = @"^((([1]?dd?|2[0-4]d|25[0-5]).){3}([1]?dd?|2[0-4]d|25[0-5]))$"; //判斷IP地址是否合規 while (true) { string s = Console.ReadLine(); //等待使用者輸入 bool isMatch = Regex.IsMatch(s, regex); //驗證ip是否合法 Console.WriteLine(isMatch ? "是IP地址" : "不是IP地址"); //三目運算 } }
到此這篇關於C#正規表示式的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45