定義:由一個字符序列形成的搜索模式。正則表達式可用於所有文本搜索和文本替換的操作。
語法:
/pattern/modifiers
正則表達式,修飾符(不區分大小寫)
正則表達式修飾符
修飾符 可以在全局搜索中不區分大小寫:
修飾符 | 描述 |
---|---|
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) | 查找任何指定的選項。 |
(x|y) | 查找任何以 | 分隔的選項。 |
元字符是擁有特殊含義的字符:
元字符 | 描述 |
---|---|
. | 查找單個字符,除了換行和行結束符。 |
\w | 查找單詞字符。 |
\W |
查找非單詞字符。 |
\d | 查找數字。 |
\D | 查找非數字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
匹配單詞邊界。 | |
\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 的字符串。 |
使用字符串方法
在 JavaScript 中,正則表達式通常用於兩個字符串方法 : search() 和 replace()。
search() 方法
用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,並返回子字符串的起始位置。
使用正則表達式搜索 "w3cschool" 字符串,且不區分大小寫:
var str = "Visit w3cschool";
var n = str.search(/w3cschool/i);
輸出結果爲:
6
search 方法可使用字符串作爲參數。字符串參數會轉換爲正則表達式:
檢索字符串中 "w3cschool" 的子字符串:
var str = "Visit w3cschool!";
var n = str.search("w3cschool");
輸出結果爲:
6
replace() 方法
用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子字符串。
使用正則表達式且不區分大小寫將字符串中的 Microsoft 替換爲 w3cschool :
var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "w3cschool");
結果輸出爲:
Visit w3cschool!
replace() 方法將接收字符串作爲參數:
var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "w3cschool");
結果輸出爲:
Visit w3cschool!
總結:正則表達式參數可用在以上方法中 (替代字符串參數)。 正則表達式使得搜索功能更加強大(如實例中不區分大小寫)。
match()方法
split() 方法
使用 RegExp 對象
在 JavaScript 中,RegExp 對象是一個預定義了屬性和方法的正則表達式對象。
test()方法
用於檢測一個字符串是否匹配某個模式,如果字符串中含有匹配的文本,則返回 true,否則返回 false。
var patt = /e/;
patt.test("The best things in life are free!");
字符串中含有 "e",所以該實例輸出爲:
true
exec()方法
用於檢索字符串中的正則表達式的匹配。該函數返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值爲 null。
/e/.exec("The best things in life are free!");
字符串中含有 "e",所以該實例輸出爲:
e
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