iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

從0到有學習JavaScript系列 第 13

第三章 型別、值和變數-問題筆記 Capturing group

  • 分享至 

  • xImage
  •  

問題一、什麼是Capturing group?
Capturing group將pattern區分成子群組,裡面可以是quantifier或disjunciton ("|")
Capturing group會記住subpattern裡面的訊息,後續就可以使用backreference,獲通過匹配結果得到這些訊息。

如果不需要知道subpattern匹配結果,使用non-capturing group,可以提升效能。

Capturing group的使用範例:

const text = "Hello, my email is example@email.com";

const regex = /(\w+)@(\w+\.\w+)/;    
//第一個Capturing group為(\w+)
//第二個Capturing group為(\w+\.\w+)

const matchType = text.match(regex);   //text內字串符合regex格式

if (matchType) {
  const wholeMatch = matchType[0];   // 顯示整個结果:"example@email.com"
  const username = matchType[1];    // 第一個Capturing group:"example"
  const domain = matchType[2];      // 第二個Capturing group:"email.com"

  console.log(`Username: ${username}`);     //Username:example
  console.log(`Domain: ${domain}`);         //Domain:email.com
  console.log(matchType);   //["Happymail@gmail.com","Happymail","gmail.com"]
 
}

  1. match通常和正規表達式(regular expression)連用,用來檢查文字格式是不是符合正規表達式。

問題二、正規表達式 (Regular Expression) 的\w 是什麼?

\w   比對數字字母字元(Alphanumerical characters)或底線字母(”_”),
     等效於 [A-Za-z0-9_]
     
\w+  匹配數字、字母、下底線、加號 。而 + 意思是後面可以多加上英文,或數字或下底線符號,另外大小寫字母混雜也可以匹配。
 

Reference
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Named_capturing_group
https://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/
https://www.cnblogs.com/show58/p/12363218.html


上一篇
第三章 型別、值和變數-問題筆記 replace
下一篇
第三章 型別、值和變數-問題筆記 RegExp quantifier Disjunction ?:
系列文
從0到有學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言