2008年12月16日

RegExp

RegExp | 特徵與方法

文法規則計算式,用在字串的符合計算,可以作子字串的搜尋,替換。

\ ^ $ * + ? . (x) (?:x) x(?=y)
x(?!y) x|y {n} {n,} {n,m} [xyz] [^xyz] [\b] \b \B
\cX \d \D \f \n \r \s \S \t \v
\w \W \n \0 \xhh \uhhhh
RegExp

產生一個文法規則計算式(Regular Expression)的物件,用作文字模式的演算。文法規則計算式有兩種宣告法:

var regex = new RegExp("文法規則計算式" [, "字旗"]);

var literal = /文法規則計算式/[字旗];

使用 RegExp 物件製造器時,字母 ”\” 必須加上脫離字母,也就是寫成”\\”。

字旗可是下述字母的組合:

  1. g:全字串符合計算。沒設此旗時,只作第一個符合計算。
  2. i:大小寫視為相同。沒設此旗時,大小寫不相同。
  3. m:在多行文字作符合計算。
  • replace() 是物件 String 的方法,會將字串中符合第一個參數的子字串,替換成第二個參數的字串。
文法規則計算式的特別字符
\

脫離字母,有兩種用途:(一)一般文字母前面加了 \,表示是特別字。(二)特別字母前面加了 \,則以一般文字母處理。

^

文字行的開始位置。如果設了字旗 m,則每一個斷行,都是一個新的文字行開始位置。

$

文字行的尾端。如果設了字旗 m,則每一個斷行之前,都是一個文字行尾端。

*

符合發生 0 次或更多次。

+

符合發生 1 次或更多次。等於 {1,}。

?

符合發生 0 次或 1次。將 ? 接在 *, +, ?, {} 之後,會變成不貪心模式,只求最小符合字串。否則為貪心模式,求最大符合字串。

.

除了 \n \r \u2028 \u2029 的任一字母。[\s\S] 是所有字母的集合,也包括前述換行字碼。

(x)

此名為存入括號。計算文法規則 x,符合的子字串存入結果陣列,取值可用 [1], ..., [n] 或用物件的特徵 $1, ..., $9。

(?:x)

計算符合 x,但是不存入結果陣列。

x(?=y)

x 符合的條件要加上 x 之後必須接 y。雖然 y 是符合條件之一,但是 y 並不會被替換。

x(?!y)

x 符合的條件要加上 x 之後不可接 y。雖然 y 是符合條件之一,但是 y 並不會被替換。

x|y

符合 x 或 y 都可以。不限兩個參數,例如 d|e|f|g...。

{n}

n 是正整數。符合正好發生 n 次。

{n,}

n 是正整數。符合發生 n 次或更多次。

{n,m}

n, m 是正整數。符合發生至少 n 次,最多 m 次。

[xyz]

字母集合。符合其中的字母。可用”-”表連續的字母,例如 [i-n] 等於 [ijklmn]。

[^xyz]

不屬於字母集合中的字母。

[\b]

字碼,清除前一字。與下面的不同。

\b

字的邊界,也就是頭尾兩字母,接著空白字元或標點符號者。

\B

不是字的邊界,也就是不接著空白字元或標點符號者。

\cX

控制字母,X 由 A 到 Z。

\d

數字,等於 [0-9]。

\D

拉丁字母中的非數字,等於 [^0-9]。

\f

字碼,跳至下一頁。

\n

字碼,跳至新行。

\r

字碼,跳至行首。

\s

單一空白字元,包括空白字,TAB,跳頁,跳行,及獨角碼的空白。等於[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]。

\S

單一非空白字元。

\t

字碼,tab。

\v

字碼,垂直跳行。

\w

英文大小寫字母,數字,底線”_”。等於 [A-Za-z0-9_]。

\W

字母不屬於英文大小寫字母,數字,底線”_”。等於 [^A-Za-z0-9_]。

\n

n 是正整數,表第 n 個存入括號。將前面第 n 個存入陣列中的符合子字串,當作文法規則。

\0

空字元。其後不要接數字。

\xhh

ASCII 碼,兩位 16 進位數。

\uhhhh

獨角碼,四位 16 進位數。


©2008-2009 by ant2legs, All Rights Reserved. ant2legs 擁有其製作的文章,圖片與程式的著作權,所有權利保留。