JavaScript 正則表示式

正則表示式(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE)使用單個字串來描述、匹配一系列符合某個句法規則的字串搜尋模式。

搜尋模式可用於文字搜尋和文字替換。


什麼是正則表示式?

正則表示式是由一個字元序列形成的搜尋模式。

當你在文字中搜索資料時,你可以用搜索模式來描述你要查詢的內容。

正則表示式可以是一個簡單的字元,或一個更復雜的模式。

正則表示式可用於所有文字搜尋和文字替換的操作。

語法

/正則表示式主體/修飾符(可選)

其中修飾符是可選的。


例項:

var patt = /itread01/i

例項解析:

/itread01/i  是一個正則表示式。

itread01  是一個正則表示式主體 (用於檢索)。

i  是一個修飾符 (搜尋不區分大小寫)。


使用字串方法

在 JavaScript 中,正則表示式通常用於兩個字串方法 : search() 和 replace()。

search() 方法 用於檢索字串中指定的子字串,或檢索與正則表示式相匹配的子字串,並返回子串的起始位置。

replace() 方法 用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。


search() 方法使用正則表示式

例項

使用正則表示式搜尋 "itread01" 字串,且不區分大小寫:

var str = "Visit itread01!"; var n = str.search(/itread01/i);

輸出結果為:

6

嘗試一下 ?


search() 方法使用字串

search 方法可使用字串作為引數。字串引數會轉換為正則表示式:

例項

檢索字串中 "itread01" 的子串:

var str = "Visit itread01!"; var n = str.search("itread01");

嘗試一下 ?


replace() 方法使用正則表示式

例項

使用正則表示式且不區分大小寫將字串中的 Microsoft 替換為 itread01 :

var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"itread01");

結果輸出為:

Visit itread01!

嘗試一下 ?

replace() 方法使用字串

replace() 方法將接收字串作為引數:

var str = document.getElementById("demo").innerHTML; var txt = str.replace("Microsoft","itread01");

嘗試一下 ?


你注意到了嗎?


Note 正則表示式引數可用在以上方法中 (替代字串引數)。
正則表示式使得搜尋功能更加強大(如例項中不區分大小寫)。


正則表示式修飾符

修飾符 可以在全域性搜尋中不區分大小寫:

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


正則表示式模式

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

表示式 描述
[abc] 查詢方括號之間的任何字元。
[0-9] 查詢任何從 0 至 9 的數字。
(x|y) 查詢任何以 | 分隔的選項。

元字元是擁有特殊含義的字元:

元字元 描述
\d 查詢數字。
\s 查詢空白字元。
\b 匹配單詞邊界。
\uxxxx 查詢以十六進位制數 xxxx 規定的 Unicode 字元。

量詞:

量詞 描述
n+ 匹配任何包含至少一個 n 的字串。
n* 匹配任何包含零個或多個 n 的字串。
n? 匹配任何包含零個或一個 n 的字串。


使用 RegExp 物件

在 JavaScript 中,RegExp 物件是一個預定義了屬性和方法的正則表示式物件。


使用 test()

test() 方法是一個正則表示式方法。

test() 方法用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文字,則返回 true,否則返回 false。

以下例項用於搜尋字串中的字元 "e":

例項

var patt = /e/;
patt.test("The best things in life are free!");

字串中含有 "e",所以該例項輸出為:

true

嘗試一下 ?

你可以不用設定正則表示式的變數,以上兩行程式碼可以合併為一行:

/e/.test("The best things in life are free!")


使用 exec()

exec() 方法是一個正則表示式方法。

exec() 方法用於檢索字串中的正則表示式的匹配。

該函式返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。

以下例項用於搜尋字串中的字母 "e":

例項 1

/e/.exec("The best things in life are free!");

字串中含有 "e",所以該例項輸出為:

e

嘗試一下 ?

更多例項

  • JS 判斷輸入字串是否為數字、字母、下劃線組成

  • JS 判斷輸入字串是否全部為字母

  • JS 判斷輸入字串是否全部為數字


完整的 RegExp 參考手冊

完整的 RegExp 物件參考手冊,請參考我們的 JavaScript RegExp 參考手冊。

該參考手冊包含了所有 RegExp 物件的方法和屬性。