什麼是正則表達式?
正則表達式(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE)使用單個字符串來描述、匹配一系列符合某個句法規則的字符串搜索模式。
正則表達式是由一個字符序列形成的搜索模式。
當你在文本中搜索數據時,你可以用搜索模式來描述你要查詢的內容。
正則表達式可以是一個簡單的字符,或一個更復雜的模式。
正則表達式可用於所有文本搜索和文本替換的操作。
語法
/pattern/modifiers;
實例:
var patt = /w3cschool/i
實例解析:
/w3cschool/i 是一個正則表達式。
w3cschool 是一個模式 (用於檢索)。
i 是一個修飾符 (搜索不區分大小寫)。
使用字符串方法
在 JavaScript 中,正則表達式通常用於兩個字符串方法 : search() 和 replace()。
search() 方法 用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,並返回子串的起始位置。
replace() 方法 用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
search() 方法使用正則表達式
使用正則表達式搜索 “w3cschool” 字符串,且不區分大小寫:
var str = "Visit w3cschool";
var n = str.search(/w3cschool/i);
輸出結果爲:6
search() 方法使用字符串
search 方法可使用字符串作爲參數。字符串參數會轉換爲正則表達式,檢索字符串中 “w3cschool” 的子串:
var str = "Visit w3cschool!";
var n = str.search("w3cschool");
replace() 方法使用正則表達式
使用正則表達式且不區分大小寫將字符串中的 Microsoft 替換爲 w3cschool :
var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "w3cschool");
結果輸出爲:Visit w3cschool!
replace() 方法使用字符串
replace() 方法將接收字符串作爲參數:
var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "w3cschool");
正則表達式參數可用在以上方法中 (替代字符串參數)。
正則表達式使得搜索功能更加強大(如實例中不區分大小寫)。
正則表達式修飾符
修飾符 可以在全局搜索中不區分大小寫:
修飾符 | 描述 |
---|---|
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”:
/e/.exec("The best things in life are free!");
字符串中含有 “e”,所以該實例輸出爲:e