<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript引用類型RegExp基本用法詳解

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:10:27
        文檔

        JavaScript引用類型RegExp基本用法詳解

        JavaScript引用類型RegExp基本用法詳解:本文實(shí)例講述了JavaScript引用類型RegExp基本用法。分享給大家供大家參考,具體如下: 1、正則表達(dá)式定義 三個(gè)標(biāo)志:全局模式g,不區(qū)分大小寫模式i,多行模式m。 1) 字面量定義 var pattern = /[fe]at/gim; 2) 構(gòu)造函數(shù)定義: 接收兩個(gè)參數(shù)——要
        推薦度:
        導(dǎo)讀JavaScript引用類型RegExp基本用法詳解:本文實(shí)例講述了JavaScript引用類型RegExp基本用法。分享給大家供大家參考,具體如下: 1、正則表達(dá)式定義 三個(gè)標(biāo)志:全局模式g,不區(qū)分大小寫模式i,多行模式m。 1) 字面量定義 var pattern = /[fe]at/gim; 2) 構(gòu)造函數(shù)定義: 接收兩個(gè)參數(shù)——要

        本文實(shí)例講述了JavaScript引用類型RegExp基本用法。分享給大家供大家參考,具體如下:

        1、正則表達(dá)式定義

        三個(gè)標(biāo)志:全局模式g,不區(qū)分大小寫模式i,多行模式m。

        1) 字面量定義

        var pattern = /[fe]at/gim;
        
        

        2) 構(gòu)造函數(shù)定義:

        接收兩個(gè)參數(shù)——要匹配的字符串模式和可選的模式字符串(g,i,m)。

        var pattern = new RegExp("[fe]at","gim");
        
        

        注意:

        1) 若需要匹配的字符串中包含以下元字符,就必須對它們進(jìn)行轉(zhuǎn)義:( [ { \ ^ & | ) ? * + . ] } 。

        2) 由于構(gòu)造函數(shù)定義正則表達(dá)式的參數(shù)是字符串,所以在某些情況下要對字符時(shí)行雙重轉(zhuǎn)義如\n,字符\在字符串中通常被轉(zhuǎn)義為\\,而在正則表達(dá)式字符串參數(shù)中就會變成\\\\,字面量模式/\w\\hello\\123/等價(jià)的字符串為“\\w\\\\hello\\\\123”。

        2、RegExp實(shí)例屬性

      1. 1) global 表示是否設(shè)置了g標(biāo)志。
      2. 2) ignoreCase 表示是否設(shè)置了i標(biāo)志。
      3. 3) multiline 表示是否設(shè)置了m標(biāo)志。
      4. 4) lastIndex 用于記錄上一次匹配結(jié)束的位置,即下一次開始搜索下一個(gè)匹配項(xiàng)的位置,從0算起。
      5. 5) Source返回正則表達(dá)式的字符串表示,按照字面量模式返回而非傳入構(gòu)造函數(shù)的字符串模式返回。
      6. var pattern = new RegExp("\\[fe\\]at","i");
        alert(pattern.source);
        
        

        以上代碼返回\[fe\]at

        3、RegExp實(shí)例方法

        1) 繼承的toLocaleString()toString()valueOf()方法

        toLocaleString():返回正則表達(dá)式的字面量,與創(chuàng)建正則表達(dá)式的方式無關(guān)。

        toString():返回正則表達(dá)式的字面量,與創(chuàng)建正則表達(dá)式的方式無關(guān)。

        valueOf():返回正則表達(dá)式本身。

        var pattern1 = /\[fe\]at/i);
        var pattern2 = new RegExp("\\[fe\\]at","i");
        alert(pattern1.toString()); // /\[fe\]at/i
        alert(pattern1.toLocaleString()); // /\[fe\]at/i
        alert(pattern2.toString()); // /\[fe\]at/i
        alert(pattern2.toLocaleString()); // /\[fe\]at/i
        
        

        2) match()方法

        參數(shù):用于匹配的正則表達(dá)式。

        返回值:區(qū)分match()的返回值主要是看是否設(shè)置g標(biāo)志,沒有設(shè)置g標(biāo)志時(shí)與exec()是等價(jià)的。

        a. 如果設(shè)置g標(biāo)志,那么返回的是包含所有匹配項(xiàng)的數(shù)組。

        b. 如果沒有設(shè)置g標(biāo)志,那么返回的是包含第一個(gè)匹配項(xiàng)的數(shù)組,第0項(xiàng)是與整個(gè)正則表達(dá)式匹配的字符串,第1項(xiàng)是是與第1個(gè)子表達(dá)式相匹配的文本(如果有的話),第2項(xiàng)是與第2個(gè)子表達(dá)式相匹配的文本(如果有的話)。

        3) exec()方法

        參數(shù):要應(yīng)用模式的字符串。

        返回值:返回包含第一個(gè)匹配項(xiàng)信息的數(shù)組,沒有匹配項(xiàng)的情況下返回null。exec()的返回值不受g標(biāo)志影響,在不設(shè)置g標(biāo)志時(shí),在同一個(gè)字符串上多次調(diào)用exec()將會始終返回第一個(gè)匹配項(xiàng)的信息。即使設(shè)置了g標(biāo)志,一次也只返回一個(gè)匹配項(xiàng),但設(shè)置g標(biāo)志時(shí),每次調(diào)用exec()都會在字符串中繼續(xù)查找新匹配項(xiàng),會驅(qū)動lastIndex可以模擬遍歷所有匹配,可以與match()設(shè)置g標(biāo)志時(shí)等價(jià)(區(qū)別在于遍歷所有匹配時(shí),exec()需要多次匹配,match()一次匹配即可得到所有匹配)。

        返回的數(shù)組包含額外的兩個(gè)屬性:index和input。其中,index表示匹配項(xiàng)在字符串中的位置,而input表示應(yīng)用正則表達(dá)式的字符串。在數(shù)組中,第0項(xiàng)是與整個(gè)正則表達(dá)式匹配的字符串,第1項(xiàng)是是與第1個(gè)子表達(dá)式相匹配的文本(如果有的話),第2項(xiàng)是與第2個(gè)子表達(dá)式相匹配的文本(如果有的話)。

        var str = "Shanghai and Beijing and Guangzhou";
        var pattern = /Shanghai ( and Beijing ( and Guangzhou)?)?/gi;
        var match = pattern.exec(str);
        alert(match.index);//0
        alert(match.input);//"Shanghai and Beijing and Guangzhou"
        alert(match[0]);//"Shanghai and Beijing and Guangzhou"
        alert(match[1]);//"and Beijing and Guangzhou"
        alert(match[2]);//"and Guangzhou"
        
        

        在不設(shè)置g標(biāo)志的情況下,同一個(gè)字符串上調(diào)用exec()始終返回第一個(gè)匹配項(xiàng)的信息。

        var str = "fat eat";
        var pattern = /.at/;
        var match = pattern.exec(str);
        alert(match.index);//0
        alert(match.input);//fat eat
        alert(match[0]);//fat
        alert(pattern.lastIndex);//0
        var match = pattern.exec(str);
        alert(match.index);//0
        alert(match.input);//fat eat
        alert(match[0]);//fat
        alert(pattern.lastIndex);//0
        
        

        設(shè)置全局標(biāo)志g情況下,同一個(gè)字符串上調(diào)用exec()每次會返回一個(gè)新的匹配項(xiàng)的信息。

        var str = "fat eat";
        var pattern = /.at/g;
        var match = pattern.exec(str);
        alert(match.index);//0
        alert(match.input);//fat eat
        alert(match[0]);//fat
        alert(pattern.lastIndex);//3
        var match = pattern.exec(str);
        alert(match.index);//4
        alert(match.input);//fat eat
        alert(match[0]);//eat
        alert(pattern.lastIndex);//7
        
        

        4)  test()方法

        參數(shù):要應(yīng)用模式的字符串

        返回值:在模式與該參數(shù)匹配的情況下返回true,否則返回false。

        test()方法經(jīng)常用于if語句中。

        問題:

        如果正則表達(dá)式帶有標(biāo)志g,使用test校驗(yàn)不同的字符串時(shí),RegExp會使用test前一個(gè)字符串得出的lastIndex去test后一個(gè)字符串,必定出錯(cuò)。

        var pattern = /^[1-9]\d{4,10}$/gi;
        var str = "88888";
        alert(pattern.test(str));//返回true
        str = "888888";
        alert(pattern.test(str));//返回false
        
        

        解決方法:

        ① 將正則表達(dá)式的 lastIndex 屬性設(shè)置為0 再用作校驗(yàn)

        var pattern = /^[1-9]\d{4,10}$/gi;
        var str = "88888";
        alert(pattern.test(str));//返回true
        str = "888888";
        pattern.lastIndex=0;
        alert(pattern.test(str));//返回true
        
        

        ② 正則表達(dá)式去掉標(biāo)志g

        var pattern = /^[1-9]\d{4,10}$/i;
        var str = "88888";
        alert(pattern.test(str));//返回true
        str = "888888";
        alert(pattern.test(str));//返回true
        
        

        5) 說明:

        ① exec()test()是正則表達(dá)式的方法,而不是字符串的方法,它的參數(shù)才是字符串;match是字符串的方法,而不是正則表達(dá)式的方法,它的參數(shù)才是正則表達(dá)式。

        ② 即使設(shè)置了g標(biāo)志,exec()每次只返回一個(gè)匹配項(xiàng)。沒有設(shè)置g標(biāo)志時(shí),exec()match()執(zhí)行結(jié)果相同;設(shè)置g標(biāo)志時(shí),match()將忽略子表達(dá)式,只查找全匹配正則表達(dá)式。

        ③ exec()match()的區(qū)別:

        a. 當(dāng)正則表達(dá)式無子表達(dá)式,并且沒有設(shè)置g標(biāo)志時(shí),exec()match()執(zhí)行結(jié)果相同,均返回第一個(gè)匹配的字符串內(nèi)容。

        var pattern = new RegExp("cat") ;
        var str = "onecat twocat";
        alert(pattern.exec(str));//返回cat
        alert(str.match(pattern));//返回cat
        
        

        b. 當(dāng)正則表達(dá)式無子表達(dá)式,并且設(shè)置g標(biāo)志時(shí),exec()返回第一個(gè)匹配的字符串內(nèi)容,若存在多處匹配內(nèi)容,則match()返回的是包含所有匹配字符串的數(shù)組。

        var pattern = new RegExp("cat","g") ;
        var str = "onecat twocat";
        alert(pattern.exec(str));//返回cat
        alert(str.match(pattern));//返回cat,cat
        
        

        c. 當(dāng)正則表達(dá)式有子表達(dá)式,并且沒有設(shè)置g標(biāo)志時(shí),exec()match()執(zhí)行結(jié)果相同,都查找全匹配正則表達(dá)式和子表達(dá)式,并返回包含全匹配字符串和匹配子表達(dá)式的數(shù)組。

        var pattern = new RegExp("c(at)") ;
        var str = "onecat twocat";
        alert(pattern.exec(str));//返回cat,at
        alert(str.match(pattern));//返回cat,at
        
        

        d. 當(dāng)正則表達(dá)式有子表達(dá)式,并且設(shè)置g標(biāo)志時(shí),exec()match()執(zhí)行的結(jié)果不相同,match()將忽略子表達(dá)式,只查找全匹配正則表達(dá)式,并返回包含所有匹配字符串的數(shù)組。

        var pattern = new RegExp("c(at)","g") ;
        var str = "onecat twocat";
        alert(pattern.exec(str));//返回cat,at
        alert(str.match(pattern));//返回cat,cat
        
        

        三個(gè)標(biāo)志:全局模式g,不區(qū)分大小寫模式i,多行模式m。

        PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

        JavaScript正則表達(dá)式在線測試工具:
        http://tools.jb51.net/regex/javascript

        正則表達(dá)式在線生成工具:
        http://tools.jb51.net/regex/create_reg

        更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript正則表達(dá)式技巧大全》、《JavaScript替換操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

        希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript引用類型RegExp基本用法詳解

        JavaScript引用類型RegExp基本用法詳解:本文實(shí)例講述了JavaScript引用類型RegExp基本用法。分享給大家供大家參考,具體如下: 1、正則表達(dá)式定義 三個(gè)標(biāo)志:全局模式g,不區(qū)分大小寫模式i,多行模式m。 1) 字面量定義 var pattern = /[fe]at/gim; 2) 構(gòu)造函數(shù)定義: 接收兩個(gè)參數(shù)——要
        推薦度:
        標(biāo)簽: 使用 調(diào)用 javascript
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久亚洲精品男人的天堂| 好大好深好猛好爽视频免费| 亚洲日本在线观看视频| 亚洲精品无码一区二区| 99国产精品永久免费视频| 亚洲αv在线精品糸列| 一级毛片在线观看免费| 久久亚洲免费视频| 亚洲第一网站免费视频| 国产成人亚洲合集青青草原精品 | 亚洲精品第一国产综合境外资源| 日韩亚洲人成网站| 亚洲精品一级无码鲁丝片| 久久毛片免费看一区二区三区| 亚洲中文字幕无码不卡电影| 在线涩涩免费观看国产精品 | 国产精品亚洲片在线花蝴蝶| 免费在线黄色网址| 中国精品一级毛片免费播放| 亚洲av伊人久久综合密臀性色| 精品无码国产污污污免费网站| 亚洲制服在线观看| 免费欧洲毛片A级视频无风险| 九九免费观看全部免费视频| 久久精品国产亚洲av麻| 国产成人免费在线| 亚洲国产精品无码久久久秋霞1| 成人亚洲综合天堂| 日韩视频免费在线观看| 国产精品高清视亚洲精品| 亚洲人成影院在线无码观看| 国产精品免费福利久久| 亚洲砖码砖专无区2023| 国产亚洲精品免费视频播放| 久久精品免费一区二区| 美女羞羞免费视频网站| 亚洲免费视频网站| 国产jizzjizz视频免费看| 一级毛片不卡片免费观看| 亚洲国产综合AV在线观看| 亚洲AV永久青草无码精品|