文法規則計算式( 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() | 此法傳回物件實體的字串。 |