文法規則計算式( Regular Expression),用在字串的符合計算,可以作子字串的搜尋,替換。Regular Expression 過去都翻譯成 正規表示法 或正則表示法,先解釋一下為什麼我會翻譯成文法規則計算式。首先牽涉到語文規則的都稱為文法,而英文文法中有 regular verbs 與 irregular verbs,分別是規則動詞與不規則動詞。所以 regular 翻成文法規則為宜。其次,在電腦程式術語中 arithmetic expression 通常翻譯成 數學計算式 或計算式。其實電腦之中,就是利用數學計算來分析文法規則,所以 Regular Expression 可以翻譯成 文法規則計算式 或文法式。
RegExp 的特別字符
| \ | 脫離字母。 |
| ^ | 文字行的開始位置。 |
| $ | 文字行的尾端。 |
| * | 符合發生 0 次或更多次。 |
| + | 符合發生 1 次或更多次。等於 {1,}。 |
| ? | 符合發生 0 次或 1次。 |
| . | 除了 \n \r \u2028 \u2029 的任一字母。 |
| (x) | 此名為存入括號。 |
| (?:x) | 計算符合 x,但是不存入結果陣列。 |
| x(?=y) | x 符合的條件要加上 x 之後必須接 y。 |
| x(?!y) | x 符合的條件要加上 x 之後不可接 y。 |
| x|y | 符合 x 或 y 都可以。 |
| {n} | n 是正整數。符合正好發生 n 次。 |
| {n,} | n 是正整數。符合發生 n 次或更多次。 |
| {n,m} | n, m 是正整數。符合發生至少 n 次,最多 m 次。 |
| [xyz] | 字母集合。符合其中的字母。 |
| [^xyz] | 不屬於字母集合中的字母。 |
| [\b] | 字碼,清除前一字。與下面的不同。 |
| \b | 字的邊界。 |
| \B | 不是字的邊界。 |
| \cX | 控制字母,X 由 A 到 Z。 |
| \d | 數字,等於 [0-9]。 |
| \D | 拉丁字母中的非數字,等於 [^0-9]。 |
| \f | 字碼,跳至下一頁。 |
| \n | 字碼,跳至新行。 |
| \r | 字碼,跳至行首。 |
| \s | 單一空白字元。 |
| \S | 單一非空白字元。 |
| \t | 字碼,tab。 |
| \v | 字碼,垂直跳行。 |
| \w | 英文大小寫字母,數字,底線”_”。 |
| \W | 字母不屬於英文大小寫字母,數字,底線”_”。 |
| \n | n 是正整數,表第 n 個 存入括號。 |
| \0 | 空字元。其後不要接數字。 |
| \xhh | ASCII 碼,兩位 16 進位數。 |
| \uhhhh | 獨角碼,四位 16 進位數。 |
RegExp 的特徵
下述特徵必須與 RegExp 配合使用,不能用在物件實體。
| prototype | 可以增加物件的特徵與方法。 |
| $1 至 $9 | 使用存入括號,可將符合的子字串存入陣列中,然後用特徵 $1 ~ $9 讀出。 |
| length | 存有參數的個數。 |
RegExp 物件實體的特徵
| constructor | 存有產生物件實體的函式其位置。 |
| global | 如果字旗 g 有設,則為 true;否則為 false。唯讀。 |
| ignoreCase | 如果字旗 i 有設,則為 true;否則為 false。唯讀。 |
| lastIndex | 程式師可指定符合計算的起始位置。符合計算後 lastIndex 會被設為符合子字串的下一個位置。 |
| multiline | 如果字旗 m 有設,則為 true;否則為 false。唯讀。 |
| source | 內存文法規則。唯讀。 |
RegExp 物件實體的方法
| exec() | 對母字串加以處理,尋找符合文法規則的子字串,結果存入陣列中。 |
| test() | 對母字串加以處理,尋找符合文法規則的子字串。 |
| toString() | 此法傳回物件實體的字串。 |