欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS正則表達(dá)式修飾符global(/g)用法分析

 更新時間:2016年12月27日 14:57:08   作者:aitangyong  
這篇文章主要介紹了JS正則表達(dá)式修飾符global(/g)用法,結(jié)合實例形式分析了JS全局匹配修飾符/g的功能、使用方法與相關(guān)注意事項,需要的朋友可以參考下

本文實例講述了JS正則表達(dá)式修飾符global(/g)用法。分享給大家供大家參考,具體如下:

/g修飾符代表全局匹配,查找所有匹配而非在找到第一個匹配后停止。先看一段經(jīng)典代碼:

var str = "123#abc";
var noglobal = /abc/i;//非全局匹配模式
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出ture
var re = /abc/ig;//全局匹配
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出false
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出false

可以看到:當(dāng)使用/g模式的時候,多次執(zhí)行RegExp.test()的輸出結(jié)果會有差別。下面的解釋摘抄自這篇文章《Javascript中正則表達(dá)式的全局匹配模式分析》:

 在創(chuàng)建正則表達(dá)式對象時如果使用了“g”標(biāo)識符或者設(shè)置它了的?global屬性值為ture時,那么新創(chuàng)建的正則表達(dá)式對象將使用模式對要將要匹配的字符串進(jìn)行全局匹配。在全局匹配模式下可以對指定要查找的字符串執(zhí)行多次匹配。每次匹配使用當(dāng)前正則對象的lastIndex屬性的值作為在目標(biāo)字符串中開 始查找的起始位置。lastIndex屬性的初始值為0,找到匹配的項后lastIndex的值被重置為匹配內(nèi)容的下一個字符在字符串中的位置索引,用來標(biāo)識下次執(zhí)行匹配時開始查找的位置。如果找不到匹配的項lastIndex的值會被設(shè)置為0。當(dāng)沒有設(shè)置正則對象的全局匹配標(biāo)志時lastIndex屬性的值始終為0,每次執(zhí)行匹配僅查找字符串中第一個匹配的項。

可以通過下面這段代碼驗證lastIndex在/g模式下的表現(xiàn):

var str = "012345678901234567890123456789";
var re = /123/g;
console.log(re.lastIndex); //輸出0,正則表達(dá)式剛開始創(chuàng)建
console.log(re.test(str)); //輸出ture
console.log(re.lastIndex); //輸出4
console.log(re.test(str)); //輸出true
console.log(re.lastIndex); //輸出14
console.log(re.test(str)); //輸出ture
console.log(re.lastIndex); //輸出24
console.log(re.test(str)); //輸出false
console.log(re.lastIndex); //輸出0,沒有找到匹配項被重置

上面我們看到了/g模式對于RegExp.test()函數(shù)的影響,現(xiàn)在我們看下對RegExp.exec()函數(shù)的影響。RegExp.exec()返回一個數(shù)組,其中存放匹配的結(jié)果。如果未找到匹配,則返回值為 null。

var str = "012345678901234567890123456789";
var re = /abc/;
//exec沒有找到匹配
console.log(re.exec(str));//null
console.log(re.lastIndex);//0

var str = "012345678901234567890123456789";
var re = /123/;
var resultArray = re.exec(str);
console.log(resultArray[0]);//匹配結(jié)果123
console.log(resultArray.input);//目標(biāo)字符串str
console.log(resultArray.index);//匹配結(jié)果在原始字符串str中的索引

對于RegExp.exec方法,不加入g,則只返回第一個匹配,無論執(zhí)行多少次均是如此;如果加入g,則第一次執(zhí)行也返回第一個匹配,再執(zhí)行返回第二個匹配,依次類推。

var str = "012345678901234567890123456789";
var re = /123/;
var globalre = /123/g;
//非全局匹配
var resultArray = re.exec(str);
console.log(resultArray[0]);//輸出123
console.log(resultArray.index);//輸出1
console.log(globalre.lastIndex);//輸出0
var resultArray = re.exec(str);
console.log(resultArray[0]);//輸出123
console.log(resultArray.index);//輸出1
console.log(globalre.lastIndex);//輸出0
//全局匹配
var resultArray = globalre.exec(str);
console.log(resultArray[0]);//輸出123
console.log(resultArray.index);//輸出1
console.log(globalre.lastIndex);//輸出4
var resultArray = globalre.exec(str);
console.log(resultArray[0]);//輸出123
console.log(resultArray.index);//輸出11
console.log(globalre.lastIndex);//輸出14

當(dāng)使用/g匹配模式的時候,我們可以通過循環(huán),獲取所有的匹配項。

var str = "012345678901234567890123456789";
var globalre = /123/g;
//循環(huán)遍歷,獲取所有匹配
var result = null;
while ((result = globalre.exec(str)) != null)
{
 console.log(result[0]);
 console.log(globalre.lastIndex);
}

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錯誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)

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

相關(guān)文章

  • js繼承實現(xiàn)方法詳解

    js繼承實現(xiàn)方法詳解

    這篇文章主要介紹了js繼承實現(xiàn)方法,結(jié)合實例形式分析了javascript繼承的實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-12-12
  • 一文詳解javascript語言中的類(class)

    一文詳解javascript語言中的類(class)

    class類是一種抽象的體現(xiàn),用來表示具有相同特性的一類事物,是面向?qū)ο缶幊滩豢扇鄙俚墓ぞ?下面這篇文章主要介紹了javascript語言中類class的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 詳解如何使用JavaScript中Promise類實現(xiàn)并發(fā)任務(wù)控制

    詳解如何使用JavaScript中Promise類實現(xiàn)并發(fā)任務(wù)控制

    在JavaScript中,Promise是一種用于管理異步操作的強大工具,但是,有時候需要更高級的控制,以限制同時執(zhí)行的任務(wù)數(shù)量,以避免系統(tǒng)資源超負(fù)荷,本文將深入探討JavaScript中的并發(fā)任務(wù)控制,并介紹如何創(chuàng)建一個自定義的Promise類——ConcurrentPromise
    2023-08-08
  • 前端原生js實現(xiàn)拖拽排課效果實例

    前端原生js實現(xiàn)拖拽排課效果實例

    這篇文章主要介紹了如何實現(xiàn)一個簡單的課程表拖拽功能,通過HTML、CSS和JavaScript的配合,我們實現(xiàn)了課程項的拖拽、放置和顯示功能,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • 用js實現(xiàn)控件的隱藏及style.visibility的使用

    用js實現(xiàn)控件的隱藏及style.visibility的使用

    用js控制控件的隱藏,使用style.visibility實現(xiàn) ,具體代碼如下,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-06-06
  • js通過canvas生成圖片縮略圖

    js通過canvas生成圖片縮略圖

    對于生成縮略圖一般做法是通過后端語言php等來生成,但是為了給服務(wù)器減壓,我們或許可以從前端來著手,先生成好不同尺寸的縮略圖,傳給后端,而后端只需要將前端傳過來的圖片進(jìn)行存儲就好了
    2020-10-10
  • Web componentd組件內(nèi)部事件回調(diào)及痛點剖析

    Web componentd組件內(nèi)部事件回調(diào)及痛點剖析

    這篇文章主要為大家介紹了Web componentd組件內(nèi)部事件回調(diào)示例及其痛點的剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • 編寫針對IE的JS代碼兩種編寫方法

    編寫針對IE的JS代碼兩種編寫方法

    有些時候我們需要針對某些IE下的兼容性寫單獨的JS處理代碼,這只是簡簡單單為了兼容行啊,有多種方法可以實現(xiàn),小編整理了一下,感興趣的朋友可以了解下,或許對你有所幫助
    2013-01-01
  • 純js實現(xiàn)倒計時功能

    純js實現(xiàn)倒計時功能

    本文主要介紹了通過js實現(xiàn)頁面的倒計時功能的思路與方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • JS計算距當(dāng)前時間的時間差實例

    JS計算距當(dāng)前時間的時間差實例

    下面小編就為大家分享一篇JS計算距當(dāng)前時間的時間差實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論