摘要:返回是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符。方法,它的參數(shù)是一個(gè)字符串,用對(duì)某個(gè)字符串進(jìn)行檢測(cè),如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回,否則返回。總結(jié)這次主要是說(shuō)說(shuō),中正則表達(dá)式對(duì)象的個(gè)屬性,而最需要注意的就是屬性了。
說(shuō)明
這篇文章,主要和大家聊聊JavaScript中RegExp對(duì)象的屬性。
解釋每個(gè)RegExp對(duì)象都包含5個(gè)屬性,source、global、ignoreCase、multiline、lastIndex。
source:是一個(gè)只讀的字符串,包含正則表達(dá)式的文本。
var reg = /JavaScript/; reg.source; //返回 JavaScript
global:是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符g。
修飾符g,是全局匹配的意思,檢索字符串中所有的匹配。
var str = "JavaScript"; str.match(/JavaScript/); //只能匹配一個(gè)JavaScript var str = "JavaScript JavaScript"; str.match(/JavaScript/g); //能匹配兩個(gè)JavaScript var reg = /JavaScript/; reg.global; //返回 false var reg = /JavaScript/g; reg.global; //返回 true
ignoreCase:是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符i。
修飾符i,說(shuō)明模式匹配是不區(qū)分大小寫(xiě)的。
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:是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符m。
修飾符m,用以在多行模式中執(zhí)行匹配,需要配合^ 和 $ 使用,使用^ 和 $ 除了匹配整個(gè)字符串的開(kāi)始和結(jié)尾之外,還能匹配每行的開(kāi)始和結(jié)尾。
var str="java JavaScript"; str.match(/^JavaScript/); //返回null var str="java JavaScript"; str.match(/^JavaScript/m); //匹配到一個(gè)JavaScript var reg=/JavaScript/; reg.multiline; //返回false var reg=/JavaScript/m; reg.multiline; //返回true
lastIndex:是一個(gè)可讀/寫(xiě)的整數(shù),如果匹配模式中帶有g(shù)修飾符,這個(gè)屬性存儲(chǔ)在整個(gè)字符串中下一次檢索的開(kāi)始位置,這個(gè)屬性會(huì)被exec( ) 和 test( ) 方法用到。
exec( )方法是在一個(gè)字符串中執(zhí)行匹配檢索,如果它沒(méi)有找到任何匹配,它就返回null,但如果它找到了一個(gè)匹配,它就返回一個(gè)數(shù)組。
當(dāng)調(diào)用exec( )的正則表達(dá)式對(duì)象具有修飾符g時(shí),它將把當(dāng)前正則表達(dá)式對(duì)象的lastIndex屬性設(shè)置為緊挨著匹配子串的字符位置,當(dāng)同一個(gè)正則表達(dá)式第二次調(diào)用exec( ),它會(huì)將從lastIndex屬性所指示的字符串處開(kāi)始檢索,如果exec( )沒(méi)有發(fā)現(xiàn)任何匹配結(jié)果,它會(huì)將lastIndex重置為0。
test( )方法,它的參數(shù)是一個(gè)字符串,用test( )對(duì)某個(gè)字符串進(jìn)行檢測(cè),如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回true,否則返回false。
var str="java"; var reg=/JavaScript/; reg.test(str); //返回false var str="JavaScript"; var reg=/JavaScript/; reg.test(str); //返回true
當(dāng)調(diào)用test( )的正則表達(dá)式對(duì)象具有修飾符g時(shí),它的行為和exec( )相同,因?yàn)樗鼜膌astIndex指定的位置處開(kāi)始檢索某個(gè)字符串,如果它找到了一個(gè)匹配結(jié)果,那么它就立即設(shè)置lastIndex為緊挨著匹配子串的字符位置
看看下面這段有趣的代碼
var str="JavaScript"; var reg=/JavaScript/g; console.log(reg.test(str)); //打印 true console.log(reg.test(str)); //打印 false
為什么同樣的字符串,同樣的正則表達(dá)式,卻打印的不一樣,如果你已經(jīng)理解了 lastIndex屬性,那你一定明白為什么。
我們來(lái)看看到底發(fā)什么了什么
var str="JavaScript"; var reg=/JavaScript/g; console.log(reg.test(str)); //打印 true console.log(reg.lastIndex); //打印10,因?yàn)槠ヅ涞搅薐avaScript,所以設(shè)置lastIndex為匹配結(jié)果緊挨著的字符位置 console.log(reg.test(str)); //打印 false,因?yàn)閺膌astIndex位置檢索字符串,已經(jīng)沒(méi)有匹配結(jié)果了 console.log(reg.lastIndex); //打印0,因?yàn)闆](méi)有匹配到結(jié)果,所以將lastIndex重置為0
這里注意一點(diǎn),如果第一次調(diào)用test( )匹配結(jié)束后,我們手動(dòng)將lastIndex重置為0,那么第二次調(diào)用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
在強(qiáng)調(diào)一次,上面說(shuō)的關(guān)于lastIndex的問(wèn)題,都是因?yàn)檎齽t表達(dá)式對(duì)象中帶有修飾符g,如果不帶有修飾符g,就不用擔(dān)心這些問(wèn)題了。
總結(jié)這次主要是說(shuō)說(shuō),JavaScript中正則表達(dá)式對(duì)象的5個(gè)屬性,而最需要注意的就是lastIndex屬性了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/51472.html
摘要:返回是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符。方法,它的參數(shù)是一個(gè)字符串,用對(duì)某個(gè)字符串進(jìn)行檢測(cè),如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回,否則返回。總結(jié)這次主要是說(shuō)說(shuō),中正則表達(dá)式對(duì)象的個(gè)屬性,而最需要注意的就是屬性了。 說(shuō)明 這篇文章,主要和大家聊聊JavaScript中RegExp對(duì)象的屬性。 解釋 每個(gè)RegExp對(duì)象都包含5個(gè)屬性,source、global、ign...
摘要:返回是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符。方法,它的參數(shù)是一個(gè)字符串,用對(duì)某個(gè)字符串進(jìn)行檢測(cè),如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回,否則返回。總結(jié)這次主要是說(shuō)說(shuō),中正則表達(dá)式對(duì)象的個(gè)屬性,而最需要注意的就是屬性了。 說(shuō)明 這篇文章,主要和大家聊聊JavaScript中RegExp對(duì)象的屬性。 解釋 每個(gè)RegExp對(duì)象都包含5個(gè)屬性,source、global、ign...
摘要:表示進(jìn)行多行匹配。如果正則表達(dá)式中含有子表達(dá)式,那么該數(shù)組后續(xù)的項(xiàng)依次為匹配到的第一個(gè)子表達(dá)式的匹配結(jié)果,第二個(gè)第個(gè)。關(guān)于正則方法有一點(diǎn)必須要提,很容易導(dǎo)致錯(cuò)誤的情況。這時(shí)候直接使用該正則表達(dá)式對(duì)進(jìn)行方法調(diào)用,卻返回了。匹配前一項(xiàng)至少次。有人說(shuō),一行正則抵得上100行代碼……正則表達(dá)式,每門(mén)語(yǔ)言都有,在我們的js開(kāi)發(fā)中,最常見(jiàn)的使用場(chǎng)景:一是表單驗(yàn)證,像是登錄注冊(cè)啊,用戶輸入檢測(cè)啊,不管在前...
摘要:的文檔說(shuō)的很清楚,是正則表達(dá)式一個(gè)可讀可寫(xiě)的整形屬性,表示下次正則匹配的起始索引。只有在正則本身使用全局匹配時(shí),該屬性才會(huì)被設(shè)置并且起作用。如果等于字符串的長(zhǎng)度,且該正則表達(dá)式匹配空字符串,則該正則表達(dá)式匹配從開(kāi)始的字符串。 故事的開(kāi)始是這樣的: showImg(https://segmentfault.com/img/bVYxJK?w=756&h=686); 需要做的就是為這個(gè)列表加...
閱讀 2949·2021-11-23 09:51
閱讀 1666·2021-10-15 09:39
閱讀 1056·2021-08-03 14:03
閱讀 2880·2019-08-30 15:53
閱讀 3437·2019-08-30 15:52
閱讀 2487·2019-08-29 16:17
閱讀 2788·2019-08-29 16:12
閱讀 1647·2019-08-29 15:26