來源 |?http://www.fly63.com/article/detial/7841正則表達(dá)式(Regular Expression)是一門簡單語言的語法規(guī)范,是強(qiáng)大、便捷、高效的文本處理工具,它應(yīng)用在一些方法中,對字符串中的信息實現(xiàn)查找、替換和提取操作。JavaScript中的正則表達(dá)式用RegExp對象表示,有兩種寫法:一種是字面量寫法;另一種是構(gòu)造函數(shù)寫法var reg=new RegExp('<%[^%>]+%>','g');
g: global,全文搜索,默認(rèn)搜索到第一個結(jié)果接停止i: ingore case,忽略大小寫,默認(rèn)大小寫敏感m: multiple lines,多行搜索(更改^ 和$的含義,使它們分別在任意一行對待行首和行尾匹配,而不僅僅在整個字符串的開頭和結(jié)尾匹配)一個正則表達(dá)式可以認(rèn)為是對一種字符片段的特征描述,而它的作用就是從一堆字符串中找出滿足條件的子字符串。比如我在JavaScript中定義一個正則表達(dá)式:var reg=/hello/ 或者 var reg=new RegExp("hello")
那么這個正則表達(dá)式可以用來從一堆字符串中找出 hello 這個單詞。而“找出”這個動作,其結(jié)果可能是找出第一個hello的位置、用別的字符串替換hello、找出所有hello等等。下面就列舉一下JavaScript中可以使用正則表達(dá)式的函數(shù)。String.prototype.search方法用來找出原字符串中某個子字符串首次出現(xiàn)的index,沒有則返回-1"abchello".search(/hello/); // 3
String.prototype.replace方法"abchello".replace(/hello/,"hi"); // "abchi"
"abchelloasdasdhelloasd".split(/hello/); //["abc", "asdasd", "asd"]
用來捕獲字符串中的子字符串到一個數(shù)組中。默認(rèn)情況下只捕獲一個結(jié)果到數(shù)組中,正則表達(dá)式有”全局捕獲“的屬性時(定義正則表達(dá)式的時候添加參數(shù)g),會捕獲所有結(jié)果到數(shù)組中"abchelloasdasdhelloasd".match(/hello/); //["hello"]"abchelloasdasdhelloasd".match(/hello/g); //["hello","hello"]
/hello/.test("abchello"); // true
和字符串的match方法類似,這個方法也是從字符串中捕獲滿足條件的字符串到數(shù)組中,但是也有兩個區(qū)別。1、exec方法一次只能捕獲一份子字符串到數(shù)組中,無論正則表達(dá)式是否有全局屬性var reg=/hello/g;reg.exec("abchelloasdasdhelloasd"); // ["hello"]
2、 正則表達(dá)式對象(也就是JavaScript中的RegExp對象)有一個lastIndex屬性,用來表示下一次從哪個位置開始捕獲,每一次執(zhí)行exec方法后,lastIndex就會往后推,直到找不到匹配的字符返回null,然后又從頭開始捕獲。 這個屬性可以用來遍歷捕獲字符串中的子串。var reg=/hello/g;reg.lastIndex; //0reg.exec("abchelloasdasdhelloasd"); // ["hello"]reg.lastIndex; //8reg.exec("abchelloasdasdhelloasd"); // ["hello"]reg.lastIndex; //19reg.exec("abchelloasdasdhelloasd"); // nullreg.lastIndex; //0