熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#中的常用正則表達式總結

2013-11-13 10:33:10  來源: .NET編程 

  這是我發了不少時間整理的C#的正則表達式新手朋友注意一定要手冊一下哦這樣可以節省很多寫代碼的時間中國自學編程網為新手朋友整理發布

  只能輸入數字^[]*$

  只能輸入n位的數字^\d{n}$

  只能輸入至少n位的數字^\d{n}$

  只能輸入m~n位的數字^\d{mn}$

  只能輸入零和非零開頭的數字^(|[][]*)$

  只能輸入有兩位小數的正實數^[]+([]{})?$

  只能輸入有~位小數的正實數^[]+([]{})?$

  只能輸入非零的正整數^\+?[][]*$

  只能輸入非零的負整數^\[][]*$

  只能輸入長度為的字符^{}$

  只能輸入由個英文字母組成的字符串^[AZaz]+$

  只能輸入由個大寫英文字母組成的字符串^[AZ]+$

  只能輸入由個小寫英文字母組成的字符串^[az]+$

  只能輸入由數字和個英文字母組成的字符串^[AZaz]+$

  只能輸入由數字個英文字母或者下劃線組成的字符串^\w+$

  驗證用戶密碼^[azAZ]\w{}$正確格式為以字母開頭長度在~之間只能包含字符數字和下劃線

  驗證是否含有^%&;=?$\等字符[^%&;=?$\x]+

  只能輸入漢字^[\ue\ufa]{}$

  驗證Email地址^\w+([+]\w+)*@\w+([]\w+)*\\w+([]\w+)*$

  驗證InternetURL//([\w]+\)+[\w]+(/[\w/?%&=]*)?$

  驗證電話號碼^(\(\d{})|\d{})?\d{}$正確格式為XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  驗證身份證號(位或位數字)^\d{}|\d{}$

  驗證一年的個月^(?[]|[])$正確格式為

  驗證一個月的^((?[])|((|)[])||)$正確格式為;

  利用正則表達式限制網頁表單裡的文本框輸入內容

  用正則表達式限制只能輸入中文onkeyup=value=valuereplace(/[^\uE\uFA]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\uE\uFA]/g))

  用正則表達式限制只能輸入全角字符 onkeyup=value=valuereplace(/[^\uFF\uFFFF]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\uFF\uFFFF]/g))

  用正則表達式限制只能輸入數字onkeyup=value=valuereplace(/[^\d]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\d]/g))

  用正則表達式限制只能輸入數字和英文onkeyup=value=valuereplace(/[\W]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\d]/g))

  得用正則表達式從URL地址中提取文件名的javascript程序如下結果為page

   以下是引用片段
  s=
  s=sreplace(/(*\/){}([^\]+)*/ig$)
  alert(s)

  匹配雙字節字符(包括漢字在內)[^\x\xff]

  應用計算字符串的長度(一個雙字節字符長度計ASCII字符計)

   以下是引用片段
  Stringprototypelen=function(){return thisreplace([^\x\xff]/gaa)length;}

  匹配空行的正則表達式\n[\s| ]*\r

  匹配HTML標記的正則表達式/<(*)>*<\/\>|<(*) \/>/

  匹配首尾空格的正則表達式(^\s*)|(\s*$)

   以下是引用片段
  Stringprototypetrim = function()
  {
  return thisreplace(/(^\s*)|(\s*$)/g );
  }

  利用正則表達式分解和轉換IP地址

  下面是利用正則表達式匹配IP地址並將IP地址轉換

  成對應數值的Javascript程序

   以下是引用片段
  function IPV(ip)
  {
  re=/(\d+)\(\d+)\(\d+)\(\d+)/g //匹配IP地址的正則表達式
  if(retest(ip))
  {
  return RegExp$*Mathpow())+RegExp$*Mathpow())+RegExp$*+RegExp$*
  }
  else
  {
  throw new Error(Not a valid IP address!)
  }
  }

 不過上面的程序如果不用正則表達式而直接用split函數來分解可能更簡單程序如下

   以下是引用片段
  var ip=
  ip=ipsplit()
  alert(IP值是+(ip[]***+ip[]**+ip[]*+ip[]*))

  符號解釋

  \

  將下一個字符標記為一個特殊字符或一個原義字符或一個 向後引用或一個八進制轉義符例如n 匹配字符 n\n 匹配一個換行符序列 \\ 匹配 \\( 則匹配 (

  ^

  匹配輸入字符串的開始位置如果設置了 RegExp 對象的 Multiline 屬性^ 也匹配 \n\r 之後的位置

  $

  匹配輸入字符串的結束位置如果設置了RegExp 對象的 Multiline 屬性$ 也匹配 \n\r 之前的位置

  *

  匹配前面的子表達式零次或多次例如zo* 能匹配 z 以及 zoo* 等價於{}

  +

  匹配前面的子表達式一次或多次例如zo+ 能匹配 zo 以及 zoo但不能匹配 z+ 等價於 {}

  ?

  匹配前面的子表達式零次或一次例如do(es)? 可以匹配 dodoes 中的do ? 等價於 {}

  {n}

  n 是一個非負整數匹配確定的 n 次例如o{} 不能匹配 Bob 中的 o但是能匹配 food 中的兩個 o

  {n}

  n 是一個非負整數至少匹配n 次例如o{} 不能匹配 Bob 中的 o但能匹配 foooood 中的所有 oo{} 等價於 o+o{} 則等價於 o*

  {nm}

  m 和 n 均為非負整數其中n <= m最少匹配 n 次且最多匹配 m 次例如o{} 將匹配 fooooood 中的前三個 oo{} 等價於 o?請注意在逗號和兩個數之間不能有空格

  ?

  當該字符緊跟在任何一個其他限制符 (* + ? {n} {n} {nm}) 後面時匹配模式是非貪婪的非貪婪模式盡可能少的匹配所搜索的字符串而默認的貪婪模式則盡可能多的匹配所搜索的字符串例如對於字符串 ooooo+? 將匹配單個 oo+ 將匹配所有 o

  

  匹配除 \n 之外的任何單個字符要匹配包括 \n 在內的任何字符請使用象 [\n] 的模式

  (pattern)

  匹配 pattern 並獲取這一匹配所獲取的匹配可以從產生的 Matches 集合得到在VBScript 中使用 SubMatches 集合在JScript 中則使用 $…$ 屬性要匹配圓括號字符請使用 \(\)

  (?:pattern)

  匹配 pattern 但不獲取匹配結果也就是說這是一個非獲取匹配不進行存儲供以後使用這在使用 字符 (|) 來組合一個模式的各個部分是很有用例如 industr(?:y|ies) 就是一個比 industry|industries 更簡略的表達式

  (?=pattern)

  正向預查在任何匹配 pattern 的字符串開始處匹配查找字符串這是一個非獲取匹配也就是說該匹配不需要獲取供以後使用例如Windows (?=||NT|) 能匹配 Windows 中的 Windows 但不能匹配 Windows 中的 Windows預查不消耗字符也就是說在一個匹配發生後在最後一次匹配之後立即開始下一次匹配的搜索而不是從包含預查的字符之後開始

  (?!pattern)

  負向預查在任何不匹配 pattern 的字符串開始處匹配查找字符串這是一個非獲取匹配也就是說該匹配不需要獲取供以後使用例如Windows (?!||NT|) 能匹配 Windows 中的 Windows但不能匹配 Windows 中的 Windows預查不消耗字符也就是說在一個匹配發生後在最後一次匹配之後立即開始下一次匹配的搜索而不是從包含預查的字符之後開始

  x|y

  匹配 x 或 y例如z|food 能匹配 zfood(z|f)ood 則匹配 zoodfood

  [xyz]

  字符集合匹配所包含的任意一個字符例如 [abc] 可以匹配 plain 中的 a

  [^xyz]

  負值字符集合匹配未包含的任意字符例如 [^abc] 可以匹配 plain 中的p

  [az]

  字符范圍匹配指定范圍內的任意字符例如[az] 可以匹配 az 范圍內的任意小寫字母字符

  [^az]

  負值字符范圍匹配任何不在指定范圍內的任意字符例如[^az] 可以匹配任何不在 az 范圍內的任意字符

  \b

  匹配一個單詞邊界也就是指單詞和空格間的位置例如 er\b 可以匹配never 中的 er但不能匹配 verb 中的 er

  \B

  匹配非單詞邊界er\B 能匹配 verb 中的 er但不能匹配 never 中的 er

  \cx

  匹配由 x 指明的控制字符例如 \cM 匹配一個 ControlM 或回車符x 的值必須為 AZ 或 az 之一否則將 c 視為一個原義的 c 字符

  \d

  匹配一個數字字符等價於 []

  \D

  匹配一個非數字字符等價於 [^]

  \f

  匹配一個換頁符等價於 \xc 和 \cL

  \n

  匹配一個換行符等價於 \xa 和 \cJ

  \r

  匹配一個回車符等價於 \xd 和 \cM

  \s

  匹配任何空白字符包括空格制表符換頁符等等等價於 [ \f\n\r\t\v]

  \S

  匹配任何非空白字符等價於 [^ \f\n\r\t\v]

  \t

  匹配一個制表符等價於 \x 和 \cI

  \v

  匹配一個垂直制表符等價於

  \xb 和 \cK

  \w

  匹配包括下劃線的任何單詞字符等價於[AZaz_]

  \W

  匹配任何非單詞字符等價於 [^AZaz_]

  \xn

  匹配 n其中 n 為十六進制轉義值十六進制轉義值必須為確定的兩個數字長例如\x 匹配 A\x 則等價於 \x & 正則表達式中可以使用 ASCII 編碼

  \num

  匹配 num其中 num 是一個正整數對所獲取的匹配的引用例如()\ 匹配兩個連續的相同字符

  \n

  標識一個八進制轉義值或一個向後引用如果 \n 之前至少 n 個獲取的子表達式則 n 為向後引用否則如果 n 為八進制數字 ()則 n 為一個八進制轉義值

  \nm

  標識一個八進制轉義值或一個向後引用如果 \nm 之前至少有 nm 個獲得子表達式則 nm 為向後引用如果 \nm 之前至少有 n 個獲取則 n 為一個後跟文字 m 的向後引用如果前面的條件都不滿足若 n 和 m 均為八進制數字 ()則 \nm 將匹配八進制轉義值 nm

  \nml

  如果 n 為八進制數字 ()且 m 和 l 均為八進制數字 ()則匹配八進制轉義值 nml

  \un

  匹配 n其中 n 是一個用四個十六進制數字表示的 Unicode 字符例如 \uA 匹配版權符號 (?)


From:http://tw.wingwit.com/Article/program/net/201311/13978.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.