JavaScript學習之三:Regex

來源:互聯網
上載者:User

一、簡單模式:

  1. 元字元: (  [ { \ ^ $ | ) ? * + . 使用這些元字元,都必須進行轉義。
  2. 特殊字元:\t \n \r \f  \a \e \cX \b \v \0
  3. 字元類:測試字元的組合。
  • 簡單類:要匹配字元a, b, c字元類應是[abc].
  • 負向類:除了特定一些,想匹配所以字元。匹配除了a、b所有字元是[^ab].
  • 範圍類:從a 到 z 應是[a-z].
  • 組合類別:其他類組合而成的字元類。假設要匹配所以從a到z的字母以及從1到4的數字,以及一分行符號應是[a-m1-4\n].
  • 預定義類:
    . 除了換行和斷行符號之外的任一字元
    \d 數字
    \D 非數字字元
    \s 空白字元
    \S 非空白字元
    \w 單詞字元
    \W 非單詞字元

4.量詞:可以指定特定模式出現的次數。

  • 簡單量詞:
出現0次或一次
* 出現零次或多次(任意次)
+ 出現一次或多次(至少一次)
{n} 一定出現n次
{n,m} 至少出現n次但不超過m次
{n,} 至少出現n次
  • 貪婪的、惰性的和支配性的量詞。

貪婪的:先匹配整個字串,如果沒有匹配,去掉最後字串的最後一個字元,並再次嘗試,依次。。

惰性的:現看字串中的第一個字串是不是匹配,如果不夠,就讀入下一個字串,再匹配。。。

支配量詞:只嘗試匹配整個字串。

貪婪 惰性 支配 描述
?? ?+ 出現0次或一次
* *? *+ 出現零次或多次(任意次)
+ +? ++ 出現一次或多次(至少一次)

{n}

{n}?

{n}+

一定出現n次
{n,m} {n,m}? {n,m}+ 至少出現n次但不超過m次
{n,} {n,}? {n,}+ 至少出現n次

 

二、複雜模式:

  1. 分組:"dogdog" ->  /dog{2}/g
  2. 反向引用:分組都被存放一個特殊的地方以備將來使用,這些儲存在分組中的特殊值,我們稱之為反向引用。RegExp.$1
  3. 候選:同時匹配"red","black" 可以是/(red|black);
  4. 非捕獲性分組:建立反向引用的分組是捕獲性分組,而非捕獲性分組不建立反向引用。
  5. 前瞻:當某一個字元出現在令一個字元之前才去捕獲它。,建立正向前瞻要將模式放在(?=)如:/bed(?=room)/,負向前瞻放在(?!)之間。
  6. 邊界:行開頭:^     行結尾:$      單詞的邊界: \b       非單詞的邊界:    \B  如:/(\w+)\.$/
  7. 多行模式:/(\w+)$/gm

三、理解RegExp對象:

  • global: g表示
  • ignorecase 用i表示
  • lastindex:下次匹配從哪個字元開始
  • multiline:用m表示
  • source: Regex的元字元形式。

四、常用模式:

  1. 驗證日期:var reDate =/(?:[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/
  2. 電子郵件:var eEmail = /^(?:\W+\.?)*\w+@(?:\w+\.?)*\w+$/;

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.