學習目標:
節數知識點要求
第一節 什麼是正則表示式什麼是正則表示式瞭解
正則表示式語法瞭解
第二節 正則表示式進階修飾符掌握
檢索模式掌握
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:
在指定字串中檢索,查詢任何【是單詞邊界】規則的字元或字串