正規表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)使用單個字元串來描述、比對一系列符合某個句法規則的字元串搜尋模式。
搜尋模式可用于文本搜尋和文本替換。
正規表達式是由一個字元序列形成的搜尋模式。
當你在文本中搜尋資料時,你可以用搜尋模式來描述你要查詢的内容。
正規表達式可以是一個簡單的字元,或一個更複雜的模式。
正規表達式可用于所有文本搜尋和文本替換的操作。
其中修飾符是可選的。
var patt = /runoob/i
執行個體解析:
/runoob/i 是一個正規表達式。
runoob 是一個正規表達式主體 (用于檢索)。
i 是一個修飾符 (搜尋不區分大小寫)。
在 JavaScript 中,正規表達式通常用于兩個字元串方法 : search() 和 replace()。
search() 方法 用于檢索字元串中指定的子字元串,或檢索與正規表達式相比對的子字元串,并傳回子串的起始位置。
replace() 方法 用于在字元串中用一些字元替換另一些字元,或替換一個與正規表達式比對的子串。
使用正規表達式搜尋 "Runoob" 字元串,且不區分大小寫:
var str = "Visit Runoob!";
var n = str.search(/Runoob/i);
輸出結果為:
6
search 方法可使用字元串作為參數。字元串參數會轉換為正規表達式:
檢索字元串中 "Runoob" 的子串:
var n = str.search("Runoob");
使用正規表達式且不區分大小寫将字元串中的 Microsoft 替換為 Runoob :
var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/microsoft/i,"Runoob");
結果輸出為:
Visit Runoob!
replace() 方法将接收字元串作為參數:
var txt = str.replace("Microsoft","Runoob");

正規表達式參數可用在以上方法中 (替代字元串參數)。
正規表達式使得搜尋功能更加強大(如執行個體中不區分大小寫)。
修飾符 可以在全局搜尋中不區分大小寫:
修飾符
描述
i
執行對大小寫不敏感的比對。
g
執行全局比對(查找所有比對而非在找到第一個比對後停止)。
m
執行多行比對。
方括号用于查找某個範圍内的字元:
表達式
[abc]
查找方括号之間的任何字元。
[0-9]
查找任何從 0 至 9 的數字。
(x|y)
查找任何以 | 分隔的選項。
元字元是擁有特殊含義的字元:
元字元
\d
查找數字。
\s
查找空白字元。
\b
比對單詞邊界。
\uxxxx
查找以十六進制數 xxxx 規定的 Unicode 字元。
量詞:
量詞
n+
比對任何包含至少一個 n 的字元串。
n*
比對任何包含零個或多個 n 的字元串。
n?
比對任何包含零個或一個 n 的字元串。
在 JavaScript 中,RegExp 對象是一個預定義了屬性和方法的正規表達式對象。
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() 方法用于檢索字元串中的正規表達式的比對。
該函數傳回一個數組,其中存放比對的結果。如果未找到比對,則傳回值為 null。
以下執行個體用于搜尋字元串中的字母 "e":
/e/.exec("The best things in life are free!");
字元串中含有 "e",是以該執行個體輸出為:
e
JS 判斷輸入字元串是否為數字、字母、下劃線組成
JS 判斷輸入字元串是否全部為字母
JS 判斷輸入字元串是否全部為數字
完整的 RegExp 對象參考手冊,請參考我們的
JavaScript RegExp 參考手冊。
該參考手冊包含了所有 RegExp 對象的方法和屬性。