JS正則表示式

學習目標:

節數知識點要求

第一節 什麼是正則表示式什麼是正則表示式瞭解

正則表示式語法瞭解

第二節 正則表示式進階修飾符掌握

檢索模式掌握

RegExp物件掌握

第三節 正則表示式高階正則表示式高階掌握

一、正則表示式

1。1 正則表示式概述

按照一定的規則,查詢和替換字串。

正則表示式概念:

正則表示式(英文為regular Expression)是一種【字串檢索模式】

正則表示式具體表現為一個字串的樣子。

正則表示式執行原理是:

透過【引數字串】設定檢索規則,在【指定字串】中檢索符合規則的字串。

正則表示式的作用是:

可以用來進行

文字搜尋和文字替換

1。2 正則表示式基本語法

正則表示式的基本語法

語法:/正則表示式主體/修飾符(可選)

例如:var frk_reg = /frank/gi;

其中

(1)/frank/i是一個正則表示式

(2)frank是這個正則表示式的主體,表示想要檢索的內容是frank

(3)i 是一個正則表示式的修飾符,表示檢索內容時不區分大小寫

1。3 正則表示式常見用法

正則表示式在實際開發中一般不會單獨使用,而是會配合一些方法來完成某種功能。

因為正則表示式的作用是對字串進行操作,所以一般在實際開發中正則表示式會配合字串的search和replace方法來使用。

1。3。1 search方法

search方法用於檢索與正則表示式相匹配的子字串,並

返回子字串

起始位置

找不到是-1

例如:

在指定字串中,透過正則表示式搜尋目標子字串。並且不區分大小寫。

var str = ‘Hello Frank! GoodBye Frank!’;

var first_index = str.search(/frank/i);

console.log(first_index);

1。3。2 match方法

match() 方法可在字串內檢索指定的值,或找到一個或多個正則表示式的匹配。

返回值存放匹配結果的陣列

var str = ‘Hello Frank! GoodBye Frank!’;var first_index = str.match(/frank/gi);console.log(first_index);

1。3。3 replace方法

replace方法:用於在指定字串中

用一個字串替換一個與正則表示式相匹配的子字串

例如:

在指定字串中,透過正則表示式替換指定字串中的目標字串

var str = ‘Hello Frank! GoodBye Frank!’;

var newStr = str.replace(/frank/i,‘frankenStein’);

console.log(newStr);

很顯然replace方法的作用是替換第一個匹配到的字串,所以我們僅替換了第一個符合規則的Frank。

二、正則表示式進階

2。1 修飾符

修飾符是正則表示式進行字串檢索時【檢索規則】的制定者之一。

修飾符規定了正則應按照何種方式進行檢索。

常見的修飾符型別有兩種:i 、g

i修飾符,表示正則檢索內容時不區分大小寫

例如:

使用i修飾符,在str中檢索frank出現的第一次下標

var str = ‘Hello Frank! GoodBye Frank!’;

​ var first_index = str。search(/frank/i);

​ console。log(first_index);

​ 程式碼的執行結果是:6

​ 不使用i修飾符,在str中檢索frank出現的第一次下標

​ var str = ‘Hello Frank! GoodBye Frank!’;

var first_index = str。search(/frank/);

console。log(first_index);

​ 程式碼的執行結果是:-1

g修飾符,表示正則檢索內容時採用全域性匹配,而不是找到第一個就停止。

例如:

使用g修飾符,在str中替換所有的Frank為frankenStein

var str = ‘Hello Frank! GoodBye Frank!’;

var newStr = str。replace(/frank/gi,‘frankenStein’);

console。log(newStr);

程式碼的執行結果是:Hello frankenStein! GoodBye frankenStein!

不使用g修飾符,在str中替換所有的Frank為frankenStein

​ var str = ‘Hello Frank! GoodBye Frank!’;

​ var newStr = str。replace(/frank/i,‘frankenStein’);

​ console。log(newStr);

​ 程式碼的執行結果是:Hello frankenStein! GoodBye Frank!

2。2 檢索模式

正則表示式的檢索模式,用於指定正則採用何種方式進行內容的檢索。

常見的檢索模式有

表示式模式、元字元模式和量詞模式三種

他們並不互相獨立而是相輔相成的關係,就像修飾符可以多個一起使用一樣。

2。2。1表示式模式

正則表示式的書寫方式是透過表示式編寫的模式稱為表示式模式。

常見的表示式模式有以下三種:

a) [abc]

b) [0-9]

c) [m|n]

每一種模式中的內容都是表示一類值,而不是字面的含義。

一個方括號代表一個字元。

[abc]:在指定字串中檢索,查詢任何滿足【存在於方括號中】規則的字元或字串。

例如:

在str中替換所有:只要滿足【是a、b當中之一】的字元為(frank)

var str = ‘12abc12ABC’;

var newStr = str.replace(/[ab]/gi,’(frank)’);

console.log(newStr);//12(frank)(frank)c12(frank)(frank)C

正則不只是能替換英文,對於中文正則仍然生效

var str = ‘你好,弗蘭克!再見,弗蘭克!’;

var newStr = str。replace(/[弗蘭克]/g,’(frank)’);

console。log(newStr);//你好,(frank)(frank)(frank)!再見,(frank)(frank)(frank)!

正則匹配字串時採用多個方括號即可

var str = ‘你好,弗蘭克!再見,弗蘭克!’;

var newStr = str。replace(/

[弗][蘭][克]

/g,’(frank)’);

console。log(newStr);//你好,(frank)!再見,(frank)!

[0-9]:在指定字串中檢索,查詢任何滿足【0至9之間】規則的的字元或字串。該模式對字母也適用。

例如:在str中替換所有:【任意是0-9之間之一】的字元為(frank)

var str = ‘12abc12ABC’;

var newStr = str.replace(/[0-9]/gi,’(frank)’);

console.log(newStr);//(frank)(frank)abc(frank)(frank)ABC

在str中替換所有:【任意是a-z之間之一】的字元為(frank)

var str = ‘12abc12ABC’;

var newStr = str。replace(/

[a-z]

/g,’(frank)’);

console。log(newStr);//12(frank)(frank)(frank)12ABC

在str中替換所有:【任意是A-Z之間之一】的字元為(frank)

​ var str = ‘12abc12ABC’;

​ var newStr = str。replace(/[A-Z]/g,’(frank)’);

console。log(newStr);//12abc12(frank)(frank)(frank)

(x|y):在指定字串中檢索,查詢任何滿足【以|分隔的選項之一】的字元或字串。

例如:

在str中替換所有:【ab或者是ABC字串】為’(frank)’

var str = ‘12abc12abABC’;

var newStr = str.replace(/(ab|ABC)/g,’(frank)’);

console.log(newStr);//12(frank)c12(frank)(frank)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-yQoRsvHS-1608536259202)(020901JS正則表示式。assets/clip_image012。png)]

ps:需要注意的是,如果使用|進行正則查詢,則使用的是小括號。而不是中括號

2。2。2元字元模式

​ 元字元:具有特殊含義的字元稱為元字元。

​ 透過元字元來進行正則檢索的模式,稱為元字元模式。

常見的元字元模式有以下三種:

a)

\w

b)

\d

c) \s

d) \b

一個元字元代表一個字元。

\w

元字元用於查詢字母,數字,下劃線。

a-z、A-Z、0-9,以及下劃線。

var

*

str*

=

‘$12abc12a@@*(*bABC’

var

*

re*

= *

str*

。match(/\w/g);

*

console*

。log(*

re*

);

\W:除了字母,數字,下劃線

\d:在指定字串中檢索,查詢任何【是數字】規則的字元或字串。

例如:

var str = ‘12abc12abABC’;

var newStr = str。replace(/\d/g,’(frank)’);

console。log(newStr);//(frank)(frank)abc(frank)(frank)abABC

var str = ‘12abc12abABC’;

var newStr = str。replace(/\d\d/g,’(frank)’);

console。log(newStr);//(frank)abc(frank)abABC

\D:除了數字的

\s:

在指定字串中檢索,查詢任何【是空白】規則的字元或字串

例如:

var str = ’ 12abc 12ab ABC ';

var newStr = str.replace(/\s/g,’(frank)’);

console.log(newStr);//(frank)12abc(frank)12ab(frank)ABC(frank)

var str = ’ 12abc 12ab ABC ‘;

var newStr = str。replace(/\s\s/g,’(frank)’);

console。log(newStr);// 12abc 12ab ABC

\S:除了空白的字元

\b:

在指定字串中檢索,查詢任何【是單詞邊界】規則的字元或字串