正規表達式 - 符號&常用方法

正規表達式 - 符號&常用方法

最近發現自己還滿常用到正規表達式的,每次都是上網找然後複製貼上,因為看起來像亂碼一樣每次看都覺得頭痛,今天就參考MDN來學習一下,放在這裡讓自己以後都可以查。

寫法

const regExp = / regExp /
用兩個斜線包住

或是使用正規表達式的建構函式

const regExp = new RegExp("regexp")

簡易模式

找到的直接匹配所構成的,也就是結果會完全匹配要搜尋的字串

例:尋找abc
“Let’s sing abc song!”  “grab crab”

要尋找”abc”時,第一個句子會匹配成功,因為在這個句子中有abc,沒有斷開也沒有順序不同,第二句就不會匹配成功, 因為在這裡雖然也包含abc三個字母, 但a和b被一個空白字元分開了 (ab c)

符號

若是我們需要更複雜的搜索條件,例如:我們想要確認使用者輸入的email是否符合格式,或是搜尋一個字串中所有包含b的單字,就必須使用一些特殊符號

符號 解釋 例子
\ 反斜線會搭配一些字母用在正規表達式的一些符號中, 但是當你想要搜尋的字剛好屬於正規表達式的特殊符號時, 可以將反斜線放在特殊符號前面, 讓它不會被視作特殊符號 a* 表示一個字串中包含0至多個a, 但a*僅代表字面意義上的a* (米字號因為反斜線而被以字面意義解釋了)
a* 表示一個字串中包含0至多個a,即使沒有a這個字元也會匹配 (/a*/).test(‘bbbb’) => true
a+ 表示一個字串中包含1至多個a (/a+/).test(‘bbbb’) =>false
^a 匹配開頭符合a的字串 (/^a/).test(“ant”) => true
a$ 匹配結尾符合a的字串 (/a$/).test(‘tesla’) =>true
a{num} 尋找連續出現num次的a, num為正整數, 要注意若是a出現次數大於num, 還是會算做true (/a{2}/).test(“area”) => false (/a{2}/).test(“aah”) =>true (/a{2}/).test(“aaaaah”) =>true
a{min, max} 尋找連續出現至少min次, 至多max次的a, 跟上一條一樣的是, 要注意若是a出現次數大於max, 還是會算做true
[a-z] 尋找界在a~z之間的所有字母 (/[a-z]/).test(‘abc’) =>true (/[a-z]/).test(‘ABC’)=> false
\ba 若斜線與b搭在一起時, 放在a前面時, 表示a前面沒有別的字元, 也就是說以a開頭, 若是放在a的後面, 表示a的後面沒有別的字元, 也就是以a結尾 (/\ba/).test(‘bag’) => false (/\ba/).test(‘apple’) => true (/a\b/).test(‘apple’) => false
\d 數字, 等同[0-9] (/\d/).test(‘123’) =>true
\D 非數字
\w 數字字母和底線
\W 非數字字母和底線, 例如: %, *這些符號

Flags 模式

模式 解釋
/reg/g g代表global search, 表示搜索指定字串中的全部字元
/reg/i insensitive search 忽略大小寫 (/abc/i).test(‘ABC’) =>true

常見用法

說明 表達式
只能輸入文字或數字 /^[a-zA-Z0-9]*$/
只能輸入文字 /^[a-zA-Z]*$/
只能有數字 /^[0-9]*$/
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×