JavaScript 教程
正則表達(dá)式(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫為regex、regexp或RE)使用單個(gè)字符串來(lái)描述、匹配一系列符合某個(gè)句法規(guī)則的字符串搜索模式。
搜索模式可用于文本搜索和文本替換。
正則表達(dá)式是由一個(gè)字符序列形成的搜索模式。
當(dāng)你在文本中搜索數(shù)據(jù)時(shí),你可以用搜索模式來(lái)描述你要查詢的內(nèi)容。
正則表達(dá)式可以是一個(gè)簡(jiǎn)單的字符,或一個(gè)更復(fù)雜的模式。
正則表達(dá)式可用于所有文本搜索和文本替換的操作。
/正則表達(dá)式主體/修飾符(可選)
其中修飾符是可選的。
實(shí)例解析:
/json/i? 是一個(gè)正則表達(dá)式。
json? 是一個(gè)正則表達(dá)式主體 (用于檢索)。
i? 是一個(gè)修飾符 (搜索不區(qū)分大小寫)。
在 JavaScript 中,正則表達(dá)式通常用于兩個(gè)字符串方法 : search() 和 replace()。
search() 方法 用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串,并返回子串的起始位置。
replace() 方法 用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。
使用正則表達(dá)式搜索 "Runoob" 字符串,且不區(qū)分大小寫:
輸出結(jié)果為:
search 方法可使用字符串作為參數(shù)。字符串參數(shù)會(huì)轉(zhuǎn)換為正則表達(dá)式:
使用正則表達(dá)式且不區(qū)分大小寫將字符串中的 Microsoft 替換為 Runoob :
結(jié)果輸出為:
replace() 方法將接收字符串作為參數(shù):
![]() |
正則表達(dá)式參數(shù)可用在以上方法中 (替代字符串參數(shù))。 正則表達(dá)式使得搜索功能更加強(qiáng)大(如實(shí)例中不區(qū)分大小寫)。 |
---|
修飾符 可以在全局搜索中不區(qū)分大小寫:
修飾符 | 描述 |
---|---|
i | 執(zhí)行對(duì)大小寫不敏感的匹配。 |
g | 執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)。 |
m | 執(zhí)行多行匹配。 |
方括號(hào)用于查找某個(gè)范圍內(nèi)的字符:
表達(dá)式 | 描述 |
---|---|
[abc] | 查找方括號(hào)之間的任何字符。 |
[0-9] | 查找任何從 0 至 9 的數(shù)字。 |
(x|y) | 查找任何以 | 分隔的選項(xiàng)。 |
元字符是擁有特殊含義的字符:
元字符 | 描述 |
---|---|
d | 查找數(shù)字。 |
s | 查找空白字符。 |
b | 匹配單詞邊界。 |
uxxxx | 查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符。 |
量詞:
量詞 | 描述 |
---|---|
n+ | 匹配任何包含至少一個(gè) n 的字符串。 |
n* | 匹配任何包含零個(gè)或多個(gè) n 的字符串。 |
n? | 匹配任何包含零個(gè)或一個(gè) n 的字符串。 |
在 JavaScript 中,RegExp 對(duì)象是一個(gè)預(yù)定義了屬性和方法的正則表達(dá)式對(duì)象。
test() 方法是一個(gè)正則表達(dá)式方法。
test() 方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式,如果字符串中含有匹配的文本,則返回 true,否則返回 false。
以下實(shí)例用于搜索字符串中的字符 "e":
字符串中含有 "e",所以該實(shí)例輸出為:
你可以不用設(shè)置正則表達(dá)式的變量,以上兩行代碼可以合并為一行:
exec() 方法是一個(gè)正則表達(dá)式方法。
exec() 方法用于檢索字符串中的正則表達(dá)式的匹配。
該函數(shù)返回一個(gè)數(shù)組,其中存放匹配的結(jié)果。如果未找到匹配,則返回值為 null。
以下實(shí)例用于搜索字符串中的字母 "e":
完整的 RegExp 對(duì)象參考手冊(cè),請(qǐng)參考我們的 JavaScript RegExp 參考手冊(cè)。
該參考手冊(cè)包含了所有 RegExp 對(duì)象的方法和屬性。