1.正則的作用,簡單來說主要是以下幾個:匹配,替換,搜索,提取
2.正則的兩種創建形式:
A:perl風格,簡單快速,語法:var reg=/pattern/[flages]; 解釋:pattern是模式,就是你想要點匹配效果,flages是標誌組合:有三個值,g全文搜索,i 忽略大小寫,m多行查找。
eg:想要在一個字符串中查找是否含有字母a,忽略大小寫,全文搜索,多行,正則語句這樣寫 var reg=/a/gim;
B:js風格,語法: var reg=new RegExp("pattern","flages");參數的意義跟上面的一樣,同樣的上面的需求用js風格來寫就有:
var reg=new RegExp("a","gim");
3.js的使用方法,主要兩種:
A:正則表達式對象,即正則表達式自帶的方法主要有兩個,test()和exec(),其中前者的返回值是布爾型,後者是一個數組,下標爲0的表示的是完整匹配的值,下標1-n表示的是後面分組分組(後面會講到)的匹配.
示例:var str="running in the rain is a Beautiful thing and looks like a beauty";
var reg=/beau/gi;
alert(reg.test(str));//顯示的是true
alert(reg.exec(str));//什麼也沒有
對於上面的結果要特別做一個說明,因爲使用了g這全局參數,所以在執行的test的時候整個的遊標已經移到最後面了,在進行exec時就會查找不到。
對於表達式對象的exec方法,不加入g,則只返回第一個匹配,無論執行多少次均是如此,如果加入g,則第一次執行也返回第一個匹配,再執行返回第二個匹配,依次類推。對於exec方法,表達式加入了g,並不是說執行exec方法就可以返回所有的匹配,而是說加入了g之後,我可以通過某種方式得到所有的匹配,這裏的“方式”對於exec而言,就是依次執行這個方法即可。所以對於上面的問題如果我想返回所有的匹配就要這樣寫:
var str="running in the rain is a Beautiful thing and looks like a beauty";
var reg=/beau/gi;
var a;
while((a=reg.exec(str))!=null){
alert(a[0]);
}
B:String對象:這個就是String對象所擁有的方法主要的有:search,match,replace和split。這裏說一下match,他是一次性返回所有的結果,但前提是加了g,如果不加g也是隻會返回第一個匹配。需要說明的是如果加上了g match是一次性返回所有的結果即它的結果直接是一個匹配結果的數組,這一點要與exec區分開,exec即使加上了g也需要使用while循環來依次取出。replace方法使用的重點也是在g的使用上有g就是替換所有,沒有就是替換第一個。
理解了這些後面的匹配模式就會容易搞懂寫,接下來會繼續更新關於模式這方面的詳細講解。