JavaScript 正則表達式

2022-05-18 14:41 更新

正則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串搜索模式。

搜索模式可用于文本搜索和文本替換。


什么是正則表達式?

正則表達式是由一個字符序列形成的搜索模式。

當你在文本中搜索數據時,你可以用搜索模式來描述你要查詢的內容。

正則表達式可以是一個簡單的字符,或一個更復雜的模式。

正則表達式可用于所有文本搜索和文本替換的操作。

語法

實例:

var patt = /w3cschool/i

實例解析:

/w3cschool/i  是一個正則表達式。

w3cschool  是一個模式 (用于檢索)。

i  是一個修飾符 (搜索不區(qū)分大小寫)。


使用字符串方法

在 JavaScript 中,正則表達式通常用于兩個字符串方法 : search() 和 replace()。

search() 方法 用于檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,并返回子字符串的起始位置。

replace() 方法 用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子字符串。


search() 方法使用正則表達式

實例

使用正則表達式搜索 "w3cschool" 字符串,且不區(qū)分大小寫:

var str = "Visit w3cschool";
var n = str.search(/w3cschool/i);

輸出結果為:

6

嘗試一下 ?


search() 方法使用字符串

search 方法可使用字符串作為參數。字符串參數會轉換為正則表達式:

實例

檢索字符串中 "w3cschool" 的子字符串:

var str = "Visit w3cschool!";
var n = str.search("w3cschool");

嘗試一下 ?


replace() 方法使用正則表達式

實例

使用正則表達式且不區(qū)分大小寫將字符串中的 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");

嘗試一下 ?


你注意到了嗎?

Note 正則表達式參數可用在以上方法中 (替代字符串參數)。
正則表達式使得搜索功能更加強大(如實例中不區(qū)分大小寫)。

正則表達式修飾符

修飾符 可以在全局搜索中不區(qū)分大小寫:

修飾符 描述
i 執(zhí)行對大小寫不敏感的匹配。
g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。
m 執(zhí)行多行匹配。

正則表達式模式

方括號用于查找某個范圍內的字符:

表達式 描述
[abc] 查找方括號之間的任何字符。
[0-9] 查找任何從 0 至 9 的數字。
(x|y) 查找任何以 | 分隔的選項。

元字符是擁有特殊含義的字符:

元字符 描述
\d 查找數字。
\s 查找空白字符。
\b 匹配單詞邊界。
\uxxxx 查找以十六進制數 xxxx 規(guī)定的 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":

Example 1

/e/.exec("The best things in life are free!");

字符串中含有 "e",所以該實例輸出為:

e

嘗試一下 ?



使用 compile()

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

完整的 RegExp 參考手冊

完整的 RegExp 對象參考手冊,請參考我們的 JavaScript RegExp 參考手冊。

該參考手冊包含了所有 RegExp 對象的方法和屬性。

如果你想知道有哪些js常用的正則表達式,請參考 js 實戰(zhàn)手冊。


JavaScript正則表達式在線測試工具

JavaScript正則表達式在線測試工具



JavaScript 正則表達式學習導圖


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號