【Javascript】利用正規表示式來過濾字串

正規表示式 - Regular Expression,又稱正規表達式正規表示法規則運算式、常規表示法,它是用來做字串比對的語法,其實大部分的程式語言都會有,一般在簡單的字串比對上面,比如說:英文句子中把you are換成you’re,利用該程式語言的語法去暴力搜尋即可,但如果是比較複雜的比對呢?常見的像是eMail有沒有符合格式,手機電話號碼的格式,日期的格式等…,如果直接使用該程式語言去寫,除了曠日費時之外,另外也很難寫的很完整,難免會有沒有測到的地方,那為何不用『專門』的方法去做處理呢?以下的測試可以在Regex101這個網站去做Demo,各程式的正規式使用方法就不在這裡說明了。

單一字元

字串取代

  • 將William換成William-Weng

單一字元取代

  • 將『1,3,5,7,9換成@』,其中[1,3,5,7,9]就是表示『一個字元』,而裡面的內容就是『過濾的規則』,而『{1}』就代表有出現過一次

數字取代

  • 將『3~6換成@』,其中[3-6]是表示3~6的
  • 將『全部的數字都換成@』,其中[\d]是表示[0-9]的數字區間,其中要注意的是『d』是小寫

英文字取代

  • 將『大小寫的a~e換成@』,其中[a-eA-E]就是表示[a~e,A~E]的英文字區間
  • 將『所有的英文字母換成@』,其中[\w]就是表示[a-zA-Z]的英文字區間

非英文字、數字、空白取代

  • 將『非英文字、數字、空白換成@』,其中[^]就是表示『相反』的意思[\s]代表的是『空白』,[^\w] = [\W],[^\d] = [\D],[^\s] = [\S] (小寫 => 大寫)

多個字元

身分證字號

  • 身分證字號比對 (A~Z開頭 + 9個數字結尾),其中『^』『$』分別代表開頭、結尾,『{9}』代表要9個字元,同理手機號碼也可以這樣比對喲
  • 取代開頭文字(app開頭的)
  • 兩者選一,[cat|dog[s]]表示文中內有cat或者是dog / dogs都可以,注意要有括號才對喲,此外它也可以『命名群組 - ?<pet>』,以便於之後的維護

比對範圍

  • 3~5個數字 ({min, max})

不限範圍比對

  • 以『\b』包起來的字元比對,不限定範圍,有中就有了

比對特定副檔名

  • 我們將過濾『jpg|gif』副檔名,其中『\n』是換行的意思,因為有可能會有『.jpg.tmp』的副檔名出現,所以在尾巴加上一個斷行字元的判斷

後記

  • 其實在下對Regular Expression也只是在初學階段,正規式真的博大精深,要多多學習才是。