天天看點

javascript正規表達式詳解(基礎篇)

javascript正規表達式詳解

定義:正規表達式是字元模式對象,也就是說它是一個對象(RegExp);

作用:js最初的作用是進行表單的驗證,進而減輕伺服器端的壓力和提升使用者的體驗!而正規表達式在表單的驗證中起到了極大的作用(當然這絕不是唯一的作用),在項目中我也是經常的用到,在這裡就講解最基礎的正規表達式。

正規表達式的兩種表示方法:

1,對象表示法

var regExp = new RegExp('box','img');

第一個參數是需要比對的字元串,第二個參數是模式修飾符,i:在比對的過程中忽略大小寫;g:全局比對(而不是比對到一個目标字元串便停下來);m:多行比對;

2,字面量表示方法

var regExp = /box/igm;後面的igm作用同上

正規表達式對象的兩個方法:

var regExp = /box/igm;

var str = "this is a box,that is a box too";

1,test方法

var bool = regExp.test(str);此時bool為true

它傳回boolean值,如果比對到字元串則傳回true,如果沒有比對到則傳回false(這個方法很好使用,在項目中經常用到);

2,exec方法

var arrResult = regExp.exec(str);此處的結果是一數組,數組中隻有一個元素box;

該方法傳回一個數組,而且不管是否開啟了全局比對模式,該數組都隻傳回一個元素(這個有一個小小的bug,如果模式中用到了分組,那麼情況就會改變,請看下面的例子),但是該數組有三個屬性,input整個的字元串參數,this is a box,that is a box too;第二個參數,index,傳回比對到的模式字元串的首字母的位置;lastIndex(該屬性在ie下面為undefined是以不做講解了);

 var regExp = /(\w+)\s(\d+)/img;

var str = "google 2014";

var arr = regExp.exec(str);此時arr中的元素有三個,第一個為google 2014,第二個為google第三個為2014

講解完這幾個方法之後就不得不講完字元串對象中的四個與正規表達式有關的方法,上面的兩個方法是正規表達式對象的方法,而接下來講解的方法則是字元串對象的方法:

1,match(patten);

var arrResult = str.match(regExp);此處傳回的是一個數組,數組中含兩個box元素(因為正規表達式模式修飾符中包含了g);有人說正規表達式對象的exec是該方法的不要g的版本,我想說的是這個是不正确的,因為該方法傳回的數組沒有input等屬性。

該方法傳回數組,如若沒比對得到則方法null;數組的元素是多個的,在開啟全局模式且比對到多個目标時;

2,search("regExp");

var index = str.search(regExp);此處傳回10,因為第一個比對到的目标字元在字元串中的位置為10;

該方法傳回目标字元串的開始位置(比對到的第一個),如果沒有比對到則傳回-1;該方法有一個特點就是模式修飾符加不加全局都是一樣的。該方法作用很大可以判斷某個字元串是否包含某個子串,在項目中也有很大的用途。

3,replace("regExp","str");

var str2 = str.replace(regExp,"bom");此處的結果str2的結果是this is a bom,that is bom too;

我想通過上面結果的公布你已經對該方法有了深刻的了解;它就是用來替換字元串中的子串用的,第一個參數是正規表達式的模式,第二個是用來替換為該字元串的字元串。

4,split(regExp);

該方法我想大家都不陌生,它就是用來将字元串以某個模式轉換為數組用的,這裡就不做詳細的解說的,它很好用也很簡單,與數組的join();方法相對應;

總結這四個方法:他們雖然可以用模式比對作為參數,當然他們也可以用字元串作為參數

項目經驗總結:

在項目中遇到過很多的正規表達式的使用,但是大多都是進行簡單的表單驗證,是以這些最基礎但是最實用的方法和技術需要你牢牢地掌握,它能給你帶來很大的好處;

繼續閱讀