在平常工做中,咱們常常寫正則表達式,好比在表單中常常用來驗證用戶輸入的格式是否正確,咱們就會用到正則表達式;能夠把正則表達式看作是能夠描述問題的語言,它就是專門爲模式匹配而設計的正則表達式
上個整理的思惟導圖,後面再展開寫
數組
能夠簡單粗暴得把正則表達式理解爲查找東西,舉個例子:要在"Hello World"中找到"world"這個單詞,先用直白的語言來描述就是查找"從w開頭到d結束的字母組合",使用正則來描述就是\bw\w*d\b
,這個就是模式字符串,它由元字符和字面量字符組成設計
一、經過RegExp var reg=new RegExp('^[0-9]','g');
二、經過表達式字面量 var reg=/^[0-9]/g;
code
一、test方法:若是輸入字符串與模式相匹配,test就返回真,沒有則返回假
二、exec方法:若是輸入字符串與模式匹配,則返回一個數組,沒有匹配就返回nullregexp
/*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;
,不然它會間隔匹配對象
屬性 | 說明 |
---|---|
match(regexp) | 返回正則表達式regexp的匹配結果 |
replace(searchValue,replaceValue) | 將searchValue(正則表達式或是字符串值) 替換爲replaceValue,並返回響應的字符串 |
search(regexp) | 返回正則表達式regexp匹配位置的下標,沒有匹配就返回-1 |
split(separator,limit) | 經過參數separator(字符串或是正則表達式) 對字符串進行分割,並返回一個字符串數組 |
應用例子:blog
var text='abc def ghi jkl'; //設置全局旗標 text.match(/\w+/g); //["abc","def","ghi","jkl"] //不設置全局旗標 text.match(/(\w+)\s(\w+)/); //["abc def","abc","def"]
應用例子:字符串
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"