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

正則表達式語法及實例整理

2022-06-13   來源: .NET編程 

  ***正則表達式語法 (字符匹配語法重復匹配語法字符定位語法轉義匹配語法)********

  (字符

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

          匹配除了換行符以外的任意字符

  |        把不同的規則分隔開  例如z|food 能匹配 zfood(z|f)ood 則匹配 zoodfood

          只作為連字號

  \s       匹配任意的空白符包括空格制表符(Tab)換行符中文全角空格等

  \w       匹配字母或數字或下劃線或漢字

  \W       匹配任意不是字母數字下劃線漢字的字符

  \S       匹配任意不是空白符的字符

  \D       匹配任意非數字的字符

  \d       匹配任意數字

  [ac]      匹配括號中任意字符abc

  [^x]      匹配除了x以外的任意字符

  [^aeiou]    匹配除了aeiou這幾個字母以外的任意字符

  []       自定義字符

  (定位

  $        匹配字符串的結束(前面模式位於字符串末端)           比如^\d{}$ 表示為必須為位到位數字

  ^        匹配字符串的開始(定位後面模式開始位置)

  \B       匹配不是單詞開頭或結束的位置(匹配一個非單詞邊界)

  \b       代表單詞的開頭或結尾也就是單詞的分界處(匹配一個單詞邊界)     比如\bhi\b

  \A       前面模式開始位置

  \z       前面模式結束位置

  \Z       前面模式結束位置(換行前)

  (重復

  {n}       表示前面的字符必須連續重復匹配n次

  +        匹配重復次或更多次

  *        表示任意數量(可能是次)

  ?        重復零次或一次

  {nm}      重復的次數不能少於n次不能多於m次

  {n}      重復n次或更多次            比如 \(?\d{}[) ]?\d{}匹配()

  *?        重復任意次但盡可能少重復

  +?        重復次或更多次但盡可能少重復

  ??        重復次或但盡可能少重復

  {nm}?      重復n到m次但盡可能少重復

  {n}?      重復n次以上但盡可能少重復

  (轉義

  \n         匹配換行

  \r          匹配回車

  \t          匹配水平制表符

  \v          匹配垂直制表符

  \f           匹配換頁

  \nnn       匹配一個進制ASCII

  \xnn       匹配一個進制ASCII

  \unnnn    匹配進制的Uniode

  \c+大寫字母    匹配Ctrl大寫字母     例如\cS匹配Ctrl+S

  (exp)      匹配exp並捕獲文本到自動命名的組裡

  (?<name>exp)  匹配exp並捕獲文本到名稱為name的組裡也可以寫成(?nameexp)

  (?:exp)     匹配exp不捕獲匹配的文本也不給此分組分配組號

  (?=exp)     匹配exp前面的位置

  (?<=exp)     匹配exp後面的位置

  (?!exp)      匹配後面跟的不是exp的位置

  (?<!exp)    匹配前面不是exp的位置

  (?#comment)   這種類型的組不對正則表達式的處理產生任何影響用於提供注釋讓人閱讀   比如[]\d(?#)|[](?#)|[]?\d\d?(?#)

  (?group)    把捕獲的內容命名為group並壓入堆棧

  (?group)   從堆棧上彈出最後壓入堆棧的名為group的捕獲內容如果堆棧本來為空則本分組的匹配失敗

  (?(group)yes|no) 如果堆棧上存在以名為group的捕獲內容的話繼續匹配yes部分的表達式否則繼續匹配no部分

  (?!)       零寬負向先行斷言由於沒有後綴表達式試圖匹配總是失敗

  \        這是引用府用來將這裡列出的這些元字符當作普通的字符來進行匹配

  \<    \>      匹配詞(word)的開始(\<)和結束(\>)

  \(    \)      將 \( 和 \) 之間的表達式定義為(group)並且將匹配這個表達式的字符保存到一個臨時區域(一個正則表達式中最多可以保存個)它們可以用 \ 到\ 的符號來引用

  IgnoreCase(忽略大小寫)      匹配時不區分大小寫

  Multiline(多行模式)       更改^和$的含義使它們分別在任意一行的行首和行尾匹配而不僅僅在整個字符串的開頭和結尾匹配(在此模式下$的精確含意是:匹配\n之前的位置以及字符串

  結束前的位置)

  Singleline(單行模式)       更改的含義使它與每一個字符匹配(包括換行符\n)

  IgnorePatternWhitespace(忽略空白) 忽略表達式中的非轉義空白並啟用由#標記的注釋

  RightToLeft(從右向左查找)     匹配從右向左而不是從左向右進行

  ExplicitCapture(顯式捕獲)     僅捕獲已被顯式命名的組

  ECMAScript(JavaScript兼容模式)  使表達式的行為與它在JavaScript裡的行為一致

  C#構造正則表達式需要涉及Regex類在Regex類中包括IsMatch()匹配Replace()替換Split()拆分和Match的類

  public static bool isEmail(string sEmail)

  {

  if (stringIsNullOrEmpty(sEmail)) { return true; }

  return (new Regex([\\w]+(\\[\\w]+)*@[\\w]+(\\[\\w]+)+$)IsMatch(sEmail));

  }

  ****正則表達式實例**********

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

  評注可以用來計算字符串的長度(一個雙字節字符長度計ASCII字符計

  匹配空白行的正則表達式\n\s*\r

  評注可以用來刪除空白行

  匹配HTML標記的正則表達式<(\S*?)[^>]*>*?</\>|<*? />

  評注網上流傳的版本太糟糕上面這個也僅僅能匹配部分對於復雜的嵌套標記依舊無能為力

  匹配首尾空白字符的正則表達式^\s*|\s*$

  評注可以用來刪除行首行尾的空白字符(包括空格制表符換頁符等等)非常有用的表達式

  匹配Email地址的正則表達式\w+([+]\w+)*@\w+([]\w+)*\\w+([]\w+)*

  評注表單驗證時很實用

  匹配網址URL的正則表達式[azAz]+://[^\s]*

  評注網上流傳的版本功能很有限上面這個基本可以滿足需求

  匹配帳號是否合法(字母開頭允許字節允許字母數字下劃線)^[azAZ][azAZ_]{}$

  評注表單驗證時很實用

  匹配國內電話號碼\d{}\d{}|\d{}\d{}

  評注匹配形式如

  匹配騰訊QQ號[][]{}

  評注騰訊QQ號從開始

  匹配中國郵政編碼[]\d{}(?!\d)

  評注中國郵政編碼為位數字

  匹配身份證\d{}|\d{}

  評注中國的身份證為位或

  匹配ip地址\d+\\d+\\d+\\d+

  評注提取ip地址時有用

  匹配特定數字

  ^[]\d*$    //匹配正整數

  ^[]\d*$   //匹配負整數

  ^?[]\d*$   //匹配整數

  ^[]\d*|$  //匹配非負整數(正整數 +

  ^[]\d*|$   //匹配非正整數(負整數 +

  ^[]\d*\\d*|\\d*[]\d*$   //匹配正浮點數

  ^([]\d*\\d*|\\d*[]\d*)$  //匹配負浮點數

  ^?([]\d*\\d*|\\d*[]\d*|?\+|)$  //匹配浮點數

  ^[]\d*\\d*|\\d*[]\d*|?\+|$   //匹配非負浮點數(正浮點數 +

  ^(([]\d*\\d*|\\d*[]\d*))|?\+|$  //匹配非正浮點數(負浮點數 +

  匹配特定字符串

  ^[AZaz]+$  //匹配由個英文字母組成的字符串

  ^[AZ]+$  //匹配由個英文字母的大寫組成的字符串

  ^[az]+$  //匹配由個英文字母的小寫組成的字符串

  ^[AZaz]+$  //匹配由數字和個英文字母組成的字符串

  ^\w+$  //匹配由數字個英文字母或者下劃線組成的字符串


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