如何快速學習正規表示式

技術國粹發表於2022-03-21

正規表示式概念

正規表示式,又稱正規表示法、常規表示法(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),電腦科學的一個概念。正規表示式使用單個字串來描述、匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些符合某個模式的文字。

在日常工作中,我們經常寫正規表示式,比如在表單中經常用來驗證使用者輸入的格式是否正確,我們就會用到正規表示式;可以把正規表示式看做是可以描述問題的語言,它就是專門為模式匹配而設計的


正規表示式的語法

可以簡單粗暴得把正規表示式理解為查詢東西,舉個例子:要在"Hello World"中找到"world"這個單詞,先用直白的語言來描述就是查詢"從w開頭到d結束的字母組合",使用正則來描述就是\bw\w*d\b,這個就是模式字串,它由元字元和字面量字元組成

•常見的元字元如下:

•正規表示式中的旗標

•正規表示式中的轉義字元


JS中的正規表示式

•兩種生成方式,

舉例:匹配0-9有沒有出現

複製程式碼程式碼如下:

1、通過RegExp var reg=new RegExp('^[0-9]','g');
2、通過表示式字面量 var reg=/^[0-9]/g;

•兩種常用的方法

test()、exec()

複製程式碼程式碼如下:

1、test方法:如果輸入字串與模式相匹配,test就返回真,沒有則返回假
2、exec方法:如果輸入字串與模式匹配,則返回一個陣列,沒有匹配就返回null
/*test()方法,匹配是否有出現0-9*/
var reg1=/^[0-9]/;
reg1.test('There is no number');
//返回結果為false
/*exec()方法,匹配句子裡面的單詞,兩個單詞一組*/
/*沒有設定全域性旗標*/
var reg2=/(\w+)\s(\w+)/;
reg2.test('There is no number');
//返回結果['There is','There','is']
//第0個元素是匹配的字串,後面兩個元素分別是分組引用的子字串
/*設定全域性旗標*/
var reg3=/(\w+)\s(\w+)/g;
reg3.test('There is no number');
//設定了全域性旗標的話,exec()會迴圈尋找
//第一次查詢結果['There is','There','is'],第二次結果['no number','no','number'],第三次結果null 
exec()方法如果設定了全域性旗標,在迴圈中使用必須要手動設定其reg.lastIndex = 0;,否則它會間隔匹配

--------------------------------------------------------------------------------

字串物件與正規表示式

•在string物件中有不少以正規表示式物件作為引數的方法

屬性 說明
match(regexp) 返回正規表示式regexp的匹配結果
replace(searchValue,replaceValue) 將searchValue(正規表示式或是字串值)
替換為replaceValue,並返回響應的字串
search(regexp) 返回正規表示式regexp匹配位置的下標,沒有匹配就返回-1
split(separator,limit) 通過引數separator(字串或是正規表示式)
對字串進行分割,並返回一個字串陣列


•match方法會返回元素與模式相匹配的字串的陣列,設定全域性旗標時,會返回所有與模式相匹配的字串陣列,不設定時和exec方法相同

應用例子:

var text='abc def ghi jkl';
//設定全域性旗標
text.match(/\w+/g);
//["abc","def","ghi","jkl"]
//不設定全域性旗標
text.match(/(\w+)\s(\w+)/);
//["abc def","abc","def"] •replace方法返回被替換的字串,如果設定了全域性旗標,則替換全部匹配了的字串,否則只替換第一個匹配的字串;replace中如果第一個引數用了分組,第二個引數能夠通過符號來標識分組的前向引用

應用例子:

var text="abc def ghi jkl";
//將空格替換為字元
text.replace(/\s/,',');
//"abc,def ghi jkl"
text.replace(/\s/g,',');
//"abc,def,ghi,jkl"
//對空格之前的字元分組,用逗號替換並前向移動一位
text.replace(/(.)\s/g,",$1");
//"ab,cde,fgh,igkl" •在search與split方法中,正規表示式的全域性旗標不起作用

以上內容是小編給大家介紹的快速學習正規表示式 的方法,希望對大家有所幫助!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015104/viewspace-2878869/,如需轉載,請註明出處,否則將追究法律責任。

相關文章