JavaScript RegExp 物件

y_keven發表於2013-11-15

以下資料來自w3cschool

RegExp 物件用於規定在文字中檢索的內容。

什麼是 RegExp?

RegExp 是正規表示式的縮寫。

當您檢索某個文字時,可以使用一種模式來描述要檢索的內容。RegExp 就是這種模式。

簡單的模式可以是一個單獨的字元。

更復雜的模式包括了更多的字元,並可用於解析、格式檢查、替換等等。

您可以規定字串中的檢索位置,以及要檢索的字元型別,等等。

定義 RegExp

RegExp 物件用於儲存檢索模式。

通過 new 關鍵詞來定義 RegExp 物件。以下程式碼定義了名為 patt1 的 RegExp 物件,其模式是 "e":

var patt1=new RegExp("e");

當您使用該 RegExp 物件在一個字串中檢索時,將尋找的是字元 "e"。

RegExp 物件的方法

RegExp 物件有 3 個方法:test()、exec() 以及 compile()。

test()

test() 方法檢索字串中的指定值。返回值是 true 或 false。

例子:

var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free")); 

由於該字串中存在字母 "e",以上程式碼的輸出將是:

true

TIY

exec()

exec() 方法檢索字串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null。

例子 1:

var patt1=new RegExp("e");

document.write(patt1.exec("The best things in life are free")); 

由於該字串中存在字母 "e",以上程式碼的輸出將是:

e

TIY

例子 2:

您可以向 RegExp 物件新增第二個引數,以設定檢索。例如,如果需要找到所有某個字元的所有存在,則可以使用 "g" 引數 ("global")。

如需關於如何修改搜尋模式的完整資訊,請訪問我們的 RegExp 物件參考手冊

在使用 "g" 引數時,exec() 的工作原理如下:

  • 找到第一個 "e",並儲存其位置
  • 如果再次執行 exec(),則從儲存的位置開始檢索,並找到下一個 "e",並儲存其位置
var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null) 

由於這個字串中 6 個 "e" 字母,程式碼的輸出將是:

eeeeeenull

TIY

compile()

compile() 方法用於改變 RegExp。

compile() 既可以改變檢索模式,也可以新增或刪除第二個引數。

例子:

var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free"));

patt1.compile("d");

document.write(patt1.test("The best things in life are free"));

由於字串中存在 "e",而沒有 "d",以上程式碼的輸出是:

truefalse

TIY

完整的 RegExp 物件參考手冊

RegExp 物件

RegExp 物件表示正規表示式,它是對字串執行模式匹配的強大工具。

直接量語法

/pattern/attributes

建立 RegExp 物件的語法:

new RegExp(pattern, attributes);

引數

引數 pattern 是一個字串,指定了正規表示式的模式或其他正規表示式。

引數 attributes 是一個可選的字串,包含屬性 "g"、"i" 和 "m",分別用於指定全域性匹配、區分大小寫的匹配和多行匹配。ECMAScript 標準化之前,不支援 m 屬性。如果 pattern 是正規表示式,而不是字串,則必須省略該引數。

返回值

一個新的 RegExp 物件,具有指定的模式和標誌。如果引數 pattern 是正規表示式而不是字串,那麼 RegExp() 建構函式將用與指定的 RegExp 相同的模式和標誌建立一個新的 RegExp 物件。

如果不用 new 運算子,而將 RegExp() 作為函式呼叫,那麼它的行為與用 new 運算子呼叫時一樣,只是當 pattern 是正規表示式時,它只返回 pattern,而不再建立一個新的 RegExp 物件。

丟擲

SyntaxError - 如果 pattern 不是合法的正規表示式,或 attributes 含有 "g"、"i" 和 "m" 之外的字元,丟擲該異常。

TypeError - 如果 pattern 是 RegExp 物件,但沒有省略 attributes 引數,丟擲該異常。

修飾符

修飾符 描述
i 執行對大小寫不敏感的匹配。
g 執行全域性匹配(查詢所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。

方括號

方括號用於查詢某個範圍內的字元:

表示式 描述
[abc] 查詢方括號之間的任何字元。
[^abc] 查詢任何不在方括號之間的字元。
[0-9] 查詢任何從 0 至 9 的數字。
[a-z] 查詢任何從小寫 a 到小寫 z 的字元。
[A-Z] 查詢任何從大寫 A 到大寫 Z 的字元。
[A-z] 查詢任何從大寫 A 到小寫 z 的字元。
[adgk] 查詢給定集合內的任何字元。
[^adgk] 查詢給定集合外的任何字元。
(red|blue|green) 查詢任何指定的選項。

元字元

元字元(Metacharacter)是擁有特殊含義的字元:

元字元 描述
. 查詢單個字元,除了換行和行結束符。
\w 查詢單詞字元。
\W 查詢非單詞字元。
\d 查詢數字。
\D 查詢非數字字元。
\s 查詢空白字元。
\S 查詢非空白字元。
\b 匹配單詞邊界。
\B 匹配非單詞邊界。
\0 查詢 NUL 字元。
\n 查詢換行符。
\f 查詢換頁符。
\r 查詢回車符。
\t 查詢製表符。
\v 查詢垂直製表符。
\xxx 查詢以八進位制數 xxx 規定的字元。
\xdd 查詢以十六進位制數 dd 規定的字元。
\uxxxx 查詢以十六進位制數 xxxx 規定的 Unicode 字元。

量詞

量詞 描述
n+ 匹配任何包含至少一個 n 的字串。
n* 匹配任何包含零個或多個 n 的字串。
n? 匹配任何包含零個或一個 n 的字串。
n{X} 匹配包含 X 個 n 的序列的字串。
n{X,Y} 匹配包含 X 或 Y 個 n 的序列的字串。
n{X,} 匹配包含至少 X 個 n 的序列的字串。
n$ 匹配任何結尾為 n 的字串。
^n 匹配任何開頭為 n 的字串。
?=n 匹配任何其後緊接指定字串 n 的字串。
?!n 匹配任何其後沒有緊接指定字串 n 的字串。

RegExp 物件屬性

FF: Firefox, IE: Internet Explorer

屬性 描述 FF IE
global RegExp 物件是否具有標誌 g。 1 4
ignoreCase RegExp 物件是否具有標誌 i。 1 4
lastIndex 一個整數,標示開始下一次匹配的字元位置。 1 4
multiline RegExp 物件是否具有標誌 m。 1 4
source 正規表示式的源文字。 1 4

RegExp 物件方法

FF: Firefox, IE: Internet Explorer

方法 描述 FF IE
compile 編譯正規表示式。 1 4
exec 檢索字串中指定的值。返回找到的值,並確定其位置。 1 4
test 檢索字串中指定的值。返回 true 或 false。 1 4

支援正規表示式的 String 物件的方法

FF: Firefox, IE: Internet Explorer

方法 描述 FF IE
search 檢索與正規表示式相匹配的值。 1 4
match 找到一個或多個正規表示式的匹配。 1 4
replace 替換與正規表示式匹配的子串。 1 4
split 把字串分割為字串陣列。 1 4

 

如需可與 RegExp 物件一同使用所有屬性和方法的完整資訊,請訪問我們的 RegExp 物件參考手冊

這個參考手冊包含了對 RegExp 物件中每個屬性和方法的詳細描述,以及使用的例子。

 

相關文章