正規表達式筆記:字元類(character classes)

總結

此篇文章大部分的內容是根據 MDN: Regular expressions > Character classes 整理出來的筆記。

筆記

定義

javascript.info: In JavaScript regular expressions, a character class is a special notation that matches any symbol from a certain set.

character class 讓開發者可以定義「字元比對的範疇」。

各種範疇與文法

[]:根據 [] 內列出的條件進行比對。舉例:[abc] 會挑出 apple 中的 abanana 中的 ba,以及 cherry 中的 c

[^]:當 ^ 被放在 [] 中,其意義為「尋找不在 [] 範圍內的字符」。舉例:[^abc]+ 會挑出 apple 中的 pplebanana 中的 n,以及 cherry 中的 herry

以上條件可搭配 - 字符進行範圍搜尋,但如果是由 - 開頭或結尾,則 - 會被當作字符進行比對。範例如下:

. 會根據擺放位置會有兩種用途,範例如下:

\d:意義等同 [0-9],代表尋找阿拉伯數字

\D:代表「非數字內容」,比如比對 3.14 時會挑出 .

\w:意義等同 [A-Za-z0-9_],會尋找拉丁英數與底線符號

\W:代表「非拉丁英數、非底線」內容,比如比對 2% 時會挑出 %,而 \W+ 會挑出 笑死XD 中的 笑死

\s:意義等同 [\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff],用於比對「空白字元」

\S:代表「非空白字元」的內容,比如拿條件 \S+ 比對 hello world 會挑出 helloworld

\ 為跳脫字符,搭配特殊字元可讓該字元失去原本的特殊效果、反之亦然。範例如下:

| 為邏輯上的「或(or)」比對。比如 green|red 代表「尋找 greenred 這個模式的字串」

MDN 範例解讀

const regexpFourDigits = /\b\d{4}\b/g;

總結:比對「前後都是『邊際』且『數量為 4 個』的阿拉伯數字串」。


const regexpWordStartingWithA = /\b[aA]\w+/g;

總結:比對「開頭為 Aa 的單字」


const regexpVowels = /[AEIOUYaeiouy]/g;

意圖:比對「發母音的字符」

參考文件