RegExp 對象
正則表達式是一(yī)種字符模式。
該模式用于對文本進行(xíng)模式匹配的“搜索和(hé)替換”功能(néng)。
在 JavaScript 中,RegExp 對象是一(yī)種擁有屬性和(hé)方法的模式。
語法
/pattern/modifier(s);
實例
let pattern = /w3school/i;
修飾符
修飾符用于執行(xíng)不區(qū)分大小寫和(hé)全局的搜索:
修飾符 | 描述 |
---|---|
g | 執行(xíng)全局匹配(查找所有匹配而不是在第一(yī)個匹配後停止)。 |
i | 執行(xíng)不區(qū)分大小寫的匹配。 |
m | 執行(xíng)多行(xíng)匹配。 |
方括号
方括号用于查找某個範圍內(nèi)的字符:
表達式 | 描述 |
---|---|
[abc] | 查找括号之間(jiān)的任何字符。 |
[^abc] | 查找任何不在方括号之間(jiān)的字符。 |
[0-9] | 查找任何從(cóng) 0 至 9 的數(shù)字。 |
[^0-9] | 查找任何不在括号內(nèi)的字符(任何非數(shù)字)。 |
(x|y) | 查找任何指定的選項。 |
元字符
元字符是具有特殊含義的字符:
元字符 | 描述 |
---|---|
. | 查找單個字符,除了(le)換行(xíng)符或行(xíng)終止符。 |
\w | 查找單詞字符。 |
\W | 查找非單詞字符。 |
\d | 查找數(shù)字。 |
\D | 查找非數(shù)字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 在單詞的開(kāi)頭/結尾查找匹配項,開(kāi)頭如(rú)下(xià):\bHI,結尾如(rú)下(xià):HI\b。 |
\B | 查找匹配項,但(dàn)不在單詞的開(kāi)頭/結尾處。 |
\0 | 查找 NULL 字符。 |
\n | 查找換行(xíng)符。 |
\f | 查找換頁符。 |
\r | 查找回車符。 |
\t | 查找制表符。 |
\v | 查找垂直制表符。 |
\xxx | 查找以八進制數(shù) xxx 規定的字符。 |
\xdd | 查找以十六進制數(shù) dd 規定的字符。 |
\uxxxx | 查找以十六進制數(shù) xxxx 規定的 Unicode 字符。 |
量詞
量詞 | 描述 |
---|---|
n+ | 匹配任何包含至少(shǎo)一(yī)個 n 的字符串。 |
n* | 匹配任何包含零個或多個 n 的字符串。 |
n? | 匹配任何包含零個或一(yī)個 n 的字符串。 |
n{X} | 匹配包含 X 個 n 的序列的字符串。 |
n{X,Y} | 匹配包含 X 至 Y 個 n 的序列的字符串。 |
n{X,} | 匹配包含至少(shǎo) X 個 n 的序列的字符串。 |
n$ | 匹配任何以 n 結尾的字符串。 |
^n | 匹配任何以 n 開(kāi)頭的字符串。 |
?=n | 匹配任何其後緊接指定字符串 n 的字符串。 |
?!n | 匹配任何其後沒有緊接指定字符串 n 的字符串。 |
RegExp 對象屬性
屬性 | 描述 |
---|---|
constructor | 返回創建 RegExp 對象原型的函數(shù)。 |
global | 檢查是否設置了(le) "g" 修飾符。 |
ignoreCase | 檢查是否設置了(le) "i" 修飾符。 |
lastIndex | 規定開(kāi)始下(xià)一(yī)個匹配的索引。 |
multiline | 檢查是否設置了(le) "m" 修飾符。 |
source | 返回 RegExp 模式的文本。 |
RegExp 對象方法
方法 | 描述 |
---|---|
compile() | 在 1.5 版中已棄用。編譯正則表達式。 |
exec() | 測試字符串中的匹配項。返回第一(yī)個匹配項。 |
test() | 測試字符串中的匹配項。返回 true 或 false。 |
toString() | 返回正則表達式的字符串值。 |
RegExp 對象描述
RegExp 對象表示正則表達式,它是對字符串執行(xíng)模式匹配的強大工(gōng)具。
直接量語法
/pattern/attributes
創建 RegExp 對象的語法:
new RegExp(pattern, attributes);
參數(shù)
參數(shù) pattern 是一(yī)個字符串,指定了(le)正則表達式的模式或其他(tā)正則表達式。
參數(shù) attributes 是一(yī)個可(kě)選的字符串,包含屬性 "g"、"i" 和(hé) "m",分别用于指定全局匹配、區(qū)分大小寫的匹配和(hé)多行(xíng)匹配。ECMAScript 标準化之前,不支持 m 屬性。如(rú)果 pattern 是正則表達式,而不是字符串,則必須省略該參數(shù)。
返回值
一(yī)個新的 RegExp 對象,具有指定的模式和(hé)标志。如(rú)果參數(shù) pattern 是正則表達式而不是字符串,那(nà)麽 RegExp() 構造函數(shù)将用與指定的 RegExp 相同的模式和(hé)标志創建一(yī)個新的 RegExp 對象。
如(rú)果不用 new 運算符,而将 RegExp() 作(zuò)為(wèi)函數(shù)調用,那(nà)麽它的行(xíng)為(wèi)與用 new 運算符調用時(shí)一(yī)樣,隻是當 pattern 是正則表達式時(shí),它隻返回 pattern,而不再創建一(yī)個新的 RegExp 對象。
抛出
SyntaxError - 如(rú)果 pattern 不是合法的正則表達式,或 attributes 含有 "g"、"i" 和(hé) "m" 之外(wài)的字符,抛出該異常。
TypeError - 如(rú)果 pattern 是 RegExp 對象,但(dàn)沒有省略 attributes 參數(shù),抛出該異常。
8888
支持正則表達式的 String 對象的方法
方法 | 描述 |
---|---|
search | 檢索與正則表達式相匹配的值。 |
match | 找到一(yī)個或多個正則表達式的匹配。 |
replace | 替換與正則表達式匹配的子串。 |
split | 把字符串分割為(wèi)字符串數(shù)組。 |