JavaScript Regular Expression 正則表達式

《JavaScript 高級程式設計》之四:正則表達式 RegExp

《JavaScript 高級程式設計》第五章引用類別(Reference Type)的正則表達式部份筆記。

JavaScript 使用 RegExp 類型來支持正則表達式。

標誌(flags)有三種

  1. g:全局(global)模式,查找所有符合的字串,不設定的話,找到第一個符合的就會退出。
  2. i:不區分大小寫(case-insensitive)模式。
  3. m:多行(multiline)模式。

正則表逹式使用的元字符,需要進行轉義:

( ) [ ] { } \ ^ $ | ? * + .

使建構函式:

使用建構函式每次都會創建一個 RegExp 實作,而使用前面的方法則只會有一個實作。

RegExp 實作的屬性:

  • global: Boolean值,是否設置 g 標誌。
  • ignoreCase: Boolean 值,是否設置 g 標誌。
  • lastIndex: Interger,開始搜尋位置,從 0 算起。
  • multiline: Boolean 值,是否設置 m 標誌。
  • source: 正則表達式的字串表示。

RegExp 的方法:

  • exec():執行搜尋。接受一個參數,就是要搜尋的字串。傳回第一個符合的字串陣列。在這個陣列中,第一項是符合整個規則的字串,第二項開始是符合單一規則的字串。另外還多附了兩個屬性:index(結果在字串中的位置)和 input (原始字串)。在沒有設置 g 標誌的情況下,每次執行的結果都是第一項符合的字事;有 g 的情況下,則會往下繼續搜尋。
  • test():是否符合正則表達式。傳入要檢查的字串為參數,字串符合正則表達式則傳回 true。

RegExp 建構函數的屬性:

適用於作用域中的所有正則表達式,透過 RegExp.property 來使用。並且有長短兩種名稱(以下括號中為短名稱):

  • input ( $_ ):最近一次要搜尋的字串。
  • lastMatch ( $& ):最近一次符合項。
  • lastPattern ( $+ ):最近一次使用規則。
  • leftContext ( $` ): lastMatch 之前的字串。
  • rightContext ( $’ ):lastMatch 之後的字串。
  • multiline ( $* ):Boolean 值,是否多行。

JavaScript 不支持一些高階的正則表則式使用方法,像是並集與交集類等。實際用到時,再找一下資料確認一下即可。

書籍資料

中文書名:《JavaScript 高級程式設計》
英文書名:Professional JavaScript for Web Developers
原作者:Nicholas C.Zakas
譯者:李松峰、曹力

分享到: