中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

引用類型-RegExp類型

發布時間:2020-07-19 01:24:33 來源:網絡 閱讀:262 作者:吳金瑞 欄目:網絡安全

    

JavaScript高級程序設計(第三版)筆記-第五章-RegExp類型

 


 

定義正則表達式有兩種方式

1、用字面量形式定義正則表達式:

ver expression = /patterns/flags;

patterns:可以是任何簡單或者復雜的正則表達式
flags:
    g:表示全局
    i:表示不區分大小寫
    m:表示多行模式,在到達一行的末尾時還會繼續查找下一行

var patterns1 = /at/g;//匹配字符中所有“at”的實例var patterns2 = /[bc]at/i;//匹配所有的"bat"或"cat",不區分大小寫var patterns3 = /.at/gi;//匹配所有的以"at"結尾的三個字符的組合,不區分大小寫

模式中使用的所有元字符都必須轉義,正則表達式中的元字符包括:( [ { \ ^ $ | ) ? * + . ] }

var patterns4 = /\[bc\]at/i;//匹配第一個"[bc]at",不區分大小寫

2、用RegExp構造函數定義正則表達式,他接受兩個參數(patterns,flags)

 

var patterns2 = new RegExp("[bc]at","i");//與var patterns2 = /[bc]at/i;相同

 

同樣使用RegExp同樣也要對元字符進行轉義而且是雙重轉義

vqr pattterns4 = new RegExp("\\[bc\\]at","i");與var patterns4 = /\[bc\]at/i;相同

這兩種方法創建的正則表達式不一樣。正則表達式字面量會始終共享一個RegExp實例,而使用構造函數創建的每一個新RegExp實例都是一個新實例

引用類型-RegExp類型

var re = null,
            i;        for(i=0;i<10;i++){//只為/cat/創建了一個RegExp實例,第一次調用成功,第二是失敗,因為當第二次調用時是從索引值為3的字符開始的,所以找不到他,當第三次調用時又會從開頭開始。
            re = /cat/g;
            re.test("catgghi");
        }        for(i=0;i<10;i++){//用RegExp構造函數在每次循環中都會創建正則表達式,所以每次調用test()都會返回true
            re = new RegExp("cat","g");
            re.test("catgghi");
        }

引用類型-RegExp類型

 

RegExp實例屬性


 

global:是否設置了g標志
ignoreCase:是否設置了i標志
multiline:是否設置了m標志
lastIndex:表示開始搜索下一個匹配項的字符位置,從0算起
source:正則表達式的字符串表示

var patterns2 = /\[bc\]at/i;
alert(patterns2.global);  //falsealert(patterns2.source); //"\[bc\]at"

RegExp實例方法


 

RegExp對象的主要方法是exec(),專門為捕獲組設計的,接受一個參數,返回包含匹配項信息的數組,相對于Array的實例,多了兩個屬性index和input,在數組中,第一項是匹配的字符串,其他項是與模式中的捕獲組匹配的字符串。

 

input:表示應用正則表達式的字符串
index:表示匹配項在字符串中的位置

引用類型-RegExp類型

var text = "mom and dad and baby";var pattern = /mom (and dad (and baby)?)?/gi;var matches = pattern.exec(text);
alert(matches.index); //0;alert(matches.input); //"mom and dad and baby"alert(matches[0]); //"mom and dad and baby"alert(matches[1]); //"and dad and baby"alert(matches[2]); //"and baby"

引用類型-RegExp類型

對于exec()方法,設置了全局標志(g),每次也只會返回一個匹配項。不設置全局標志的情況下,在同一個字符串上調用它是將始終返回第一個匹配項信息,設置了(g),每次調用它時都會在字符串中繼續查找。

引用類型-RegExp類型

var text = "cat, bat, sat, fat";var pattern1 = /.at/;var matches = pattern1.exex(text);
alert(matches.index); //0alert(matches[0]); //catalert(pattern1.lastIndex); //0

 matches = pattern1.exex(text);
alert(matches.index); //0alert(matches[0]); //catalert(pattern1.lastIndex); //0var pattern2 = /.at/g;var matches = pattern2.exex(text);
alert(matches.index); //0alert(matches[0]); //catalert(pattern1.lastIndex); //3matches = pattern1.exex(text);
alert(matches.index); //5alert(matches[0]); //batalert(pattern1.lastIndex); //8

引用類型-RegExp類型

正則表達式的第二種方法是test(),接受一個參數。在模式與該參數匹配的時返回ture,否則返回false。

RegExp構造函數屬性

長屬性名       短屬性名               說明
input          $_       最近一次匹配的字符串
lastMatch       $&       最近一次的匹配項
lastParen        $+       最近一次匹配的捕獲組
leftContext     $`       input字符串中lastMatch之前的文本
multiline     $*      布爾值,表示是否所有表達式都使用多行模式。
rightContext     $'        input字符串中lastMatch之后的文本

var text = "this has been a short summer";var pattern = /(.)hort/g;if(pattern.test(text)){
            alert(RegExp.input);//(RegExp.$_)      //this has been a short summer
            alert(RegExp.leftContext);//(RegExp["$`"])   //this has been a
        }

注意:由于某些短屬性名大都不是有效的ECMAScript標識符,所以要通過方括號語法來訪問他們。

還有9個用于存儲捕獲組的構造函數屬性,RegExp.$1存儲第一個捕獲組,以此類推。

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秦皇岛市| 白水县| 韶山市| 宁晋县| 淅川县| 新田县| 平舆县| 延津县| 石狮市| 阳山县| 连城县| 和田县| 杭州市| 叙永县| 体育| 盖州市| 永德县| 清河县| 桐城市| 石棉县| 浪卡子县| 米泉市| 岑巩县| 南江县| 双牌县| 启东市| 卢湾区| 高清| 博野县| 望谟县| 尉氏县| 太原市| 金阳县| 突泉县| 余庆县| 通榆县| 友谊县| 苍山县| 大渡口区| 永新县| 江达县|