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

JS中正則表達式要注意lastIndex屬性

 更新時間:2017年08月08日 10:29:36   作者:Judian6974  
這篇文章主要介紹了JS中正則表達式要注意lastIndex屬性,需要的朋友可以參考下

 說明

這篇文章,主要和大家聊聊JavaScript中RegExp對象的屬性。

解釋

每個RegExp對象都包含5個屬性,source、global、ignoreCase、multiline、lastIndex。

source:是一個只讀的字符串,包含正則表達式的文本。

var reg = /JavaScript/;
reg.source; //返回 JavaScript

global:是一個只讀的布爾值,看這個正則表達式是否帶有修飾符g。

修飾符g,是全局匹配的意思,檢索字符串中所有的匹配。

var str = "JavaScript";
str.match(/JavaScript/); //只能匹配一個JavaScript 
var str = "JavaScript JavaScript";
str.match(/JavaScript/g); //能匹配兩個JavaScript 
var reg = /JavaScript/;
reg.global; //返回 false
var reg = /JavaScript/g;
reg.global; //返回 true

ignoreCase:是一個只讀的布爾值,看這個正則表達式是否帶有修飾符i。

修飾符i,說明模式匹配是不區(qū)分大小寫的。

var reg = /JavaScript/;
reg.ignoreCase; //返回 false
var reg = /JavaScript/i;
reg.ignoreCase; //返回 true
var reg = /JavaScript/;
reg.test("javascript"); //返回 false
var reg = /JavaScript/i;
reg.test("javascript"); //返回 true

multiline:是一個只讀的布爾值,看這個正則表達式是否帶有修飾符m。

修飾符m,用以在多行模式中執(zhí)行匹配,需要配合^ 和 $</code> 使用,使用<code>^</code> 和 <code>$ 除了匹配整個字符串的開始和結尾之外,還能匹配每行的開始和結尾。

var str="java\nJavaScript";
str.match(/^JavaScript/); //返回null
var str="java\nJavaScript";
str.match(/^JavaScript/m); //匹配到一個JavaScript
var reg=/JavaScript/;
reg.multiline; //返回false
var reg=/JavaScript/m;
reg.multiline; //返回true

lastIndex:是一個可讀/寫的整數(shù),如果匹配模式中帶有g修飾符,這個屬性存儲在整個字符串中下一次檢索的開始位置,這個屬性會被exec( ) 和 test( ) 方法用到。

exec( )方法是在一個字符串中執(zhí)行匹配檢索,如果它沒有找到任何匹配,它就返回null,但如果它找到了一個匹配,它就返回一個數(shù)組。

當調用exec( )的正則表達式對象具有修飾符g時,它將把當前正則表達式對象的lastIndex屬性設置為緊挨著匹配子串的字符位置,當同一個正則表達式第二次調用exec( ),它會將從lastIndex屬性所指示的字符串處開始檢索,如果exec( )沒有發(fā)現(xiàn)任何匹配結果,它會將lastIndex重置為0。

這里寫圖片描述

test( )方法,它的參數(shù)是一個字符串,用test( )對某個字符串進行檢測,如果包含正則表達式的一個匹配結果,則返回true,否則返回false。

var str="java";
var reg=/JavaScript/;
reg.test(str); //返回false
var str="JavaScript";
var reg=/JavaScript/;
reg.test(str); //返回true

當調用test( )的正則表達式對象具有修飾符g時,它的行為和exec( )相同,因為它從lastIndex指定的位置處開始檢索某個字符串,如果它找到了一個匹配結果,那么它就立即設置lastIndex為緊挨著匹配子串的字符位置

看看下面這段有趣的代碼

var str="JavaScript";
var reg=/JavaScript/g;
console.log(reg.test(str)); //打印 true
console.log(reg.test(str)); //打印 false

為什么同樣的字符串,同樣的正則表達式,卻打印的不一樣,如果你已經理解了 lastIndex屬性,那你一定明白為什么。

我們來看看到底發(fā)什么了什么

var str="JavaScript";
var reg=/JavaScript/g;
console.log(reg.test(str)); //打印 true
console.log(reg.lastIndex);
//打印10,因為匹配到了JavaScript,所以設置lastIndex為匹配結果緊挨著的字符位置
console.log(reg.test(str));
//打印 false,因為從lastIndex位置檢索字符串,已經沒有匹配結果了
console.log(reg.lastIndex);
//打印0,因為沒有匹配到結果,所以將lastIndex重置為0

這里注意一點,如果第一次調用test( )匹配結束后,我們手動將lastIndex重置為0,那么第二次調用test( ),同樣可以打印true

var str="java JavaScript java";
var reg=/JavaScript/g;
console.log(reg.test(str)); //打印 true
reg.lastIndex=0;
console.log(reg.test(str)); //打印 true

在強調一次,上面說的關于lastIndex的問題,都是因為正則表達式對象中帶有修飾符g,如果不帶有修飾符g,就不用擔心這些問題了。

總結

這次主要是說說,JavaScript中正則表達式對象的5個屬性,而最需要注意的就是lastIndex屬性了。

相關文章

  • element-ui 上傳圖片后標注坐標點

    element-ui 上傳圖片后標注坐標點

    有個組件庫的名稱叫做element-ui,基于Vue2.0開發(fā),提供了豐富的PC端組件,本文通過實例代碼給大家介紹element-ui 上傳圖片后標注坐標點的示例代碼,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • 利用js實現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能

    利用js實現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能

    vue數(shù)據(jù)雙向綁定是通過數(shù)據(jù)劫持結合發(fā)布者-訂閱者模式的方式來實現(xiàn)的,下面這篇文章主要給大家介紹了關于如何利用js實現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能的相關資料,需要的朋友可以參考下
    2021-07-07
  • location.hash保存頁面狀態(tài)的技巧

    location.hash保存頁面狀態(tài)的技巧

    hash 屬性是一個可讀可寫的字符串,該字符串是 URL 的錨部分(從 # 號開始的部分)。接下來通過本文給大家介紹location.hash保存頁面狀態(tài)的相關內容,感興趣的朋友一起學習吧
    2016-04-04
  • js與jQuery實現(xiàn)的用戶注冊協(xié)議倒計時功能實例【三種方法】

    js與jQuery實現(xiàn)的用戶注冊協(xié)議倒計時功能實例【三種方法】

    這篇文章主要介紹了js與jQuery實現(xiàn)的用戶注冊協(xié)議倒計時功能,結合實例形式分析了三種倒計時功能的相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-11-11
  • JS實現(xiàn)移動端實時監(jiān)聽輸入框變化的實例代碼

    JS實現(xiàn)移動端實時監(jiān)聽輸入框變化的實例代碼

    這篇文章主要介紹了JS實現(xiàn)移動端實時監(jiān)聽輸入框變化的解決方案,需要的朋友可以參考下
    2017-04-04
  • javascript操作表格排序實例分析

    javascript操作表格排序實例分析

    這篇文章主要介紹了javascript操作表格排序,涉及javascript數(shù)組排序與表格操作的相關技巧,需要的朋友可以參考下
    2015-05-05
  • JS 獲取HTML標簽內的子節(jié)點的方法

    JS 獲取HTML標簽內的子節(jié)點的方法

    下面小編就為大家?guī)硪黄狫S 獲取HTML標簽內的子節(jié)點的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • uniapp中uni.switchTab無法傳參的解決辦法

    uniapp中uni.switchTab無法傳參的解決辦法

    uni.switchTab跳轉的必須是TabBar上的路徑,下面這篇文章主要給大家介紹了關于uniapp中uni.switchTab無法傳參的解決辦法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • JS解決ajax無法后退的問題記錄

    JS解決ajax無法后退的問題記錄

    Ajax請求通常不支持瀏覽器的后退按鈕,因為它們是異步的,不會導致頁面重新加載(刷新),但如果你想要用戶能夠通過瀏覽器的后退按鈕回到之前的頁面狀態(tài),你可以通過幾種方法來解決這個問題,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • javascript實現(xiàn)倒計時并彈窗提示特效

    javascript實現(xiàn)倒計時并彈窗提示特效

    倒計時的功能在我們做項目的時候會經常遇到,這里給大家分享的是個人編寫的一個簡易的效果代碼,有需要的小伙伴可以參考下
    2015-06-06

最新評論