摘要:布爾值,表示是否設(shè)置了標(biāo)志。正則表達(dá)式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回正則表達(dá)式的實(shí)例方法方法是否匹配基本語(yǔ)法參數(shù)為正則表達(dá)式為所要匹配的字符串返回值布爾值在模式與該參數(shù)匹配的情況下返回否則,返回。
高程書(shū)中對(duì)正則部分介紹的偏少,特別是元字符部分幾乎沒(méi)有介紹;我找了幾篇不錯(cuò)的博客作為收錄:
正則表達(dá)式30分鐘入門(mén)教程
正則表達(dá)式-理論基礎(chǔ)篇
正則表達(dá)式-基礎(chǔ)實(shí)戰(zhàn)篇
最全的常用正則表達(dá)式大全
RegExp 的每個(gè)實(shí)例都具有下列屬性,通過(guò)這些屬性可以取得有關(guān)模式的各種信息。
global:布爾值,表示是否設(shè)置了 g 標(biāo)志。
ignoreCase:布爾值,表示是否設(shè)置了 i 標(biāo)志。
lastIndex:整數(shù),表示開(kāi)始搜索下一個(gè)匹配項(xiàng)的字符位置,從 0 算起。
multiline:布爾值,表示是否設(shè)置了 m 標(biāo)志。
source:正則表達(dá)式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回
var pattern1 = /[bc]at/i; alert(pattern1.global); //false alert(pattern1.ignoreCase); //true alert(pattern1.multiline); //false alert(pattern1.lastIndex); //0 alert(pattern1.source); //"[bc]at" var pattern2 = new RegExp("[bc]at", "i"); alert(pattern2.global); //false alert(pattern2.ignoreCase); //true alert(pattern2.multiline); //false alert(pattern2.lastIndex); //0 alert(pattern2.source); //"[bc]at"正則表達(dá)式的實(shí)例方法 test()方法【是否匹配】
基本語(yǔ)法:regular.test(string)
參數(shù):regular 為正則表達(dá)式;string 為所要匹配的字符串
返回值:布爾值
在模式與該參數(shù)匹配的情況下返回 true;否則,返回 false。在只想知道目標(biāo)字符串與某個(gè)模式是否匹配,但不需要知道其文本內(nèi)容的情況下,使用這個(gè)方法非常方便,因此,test()方法經(jīng)常被用在 if 語(yǔ)句中
// 檢測(cè)輸入字符是否為漢字 /^[u4e00-u9fa5]{0,}$/.test("哈哈"); // true // 校驗(yàn)電話(huà)號(hào)碼 /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$/.test("13365191314")
test()方法常用語(yǔ)校驗(yàn)用戶(hù)輸入的內(nèi)容是否符合規(guī)范
exec()方法【捕獲組】基本語(yǔ)法:regular.exec(string)
參數(shù):regular 為正則表達(dá)式;string 為所要匹配的字符串
返回值:數(shù)組或null(未匹配成功時(shí))
先來(lái)個(gè)例子:
var result = /(d+):(w+)/.exec("1234:abcd"); console.log(result) // --> ["1234:abcd", "1234", "abcd"] var result = /(d+):(w+)/.exec("呀!出錯(cuò)了"); console.log(result) // --> null
上面可以看到,匹配不到字符則返回null,匹配到則返回一個(gè)數(shù)組;那么它的元素組成是怎么樣的呢?
返回的數(shù)組的第一個(gè)元素是與整個(gè)正則匹配的文本,后面的組成項(xiàng)依次為正則中的子表達(dá)式(組)
例子中的第一個(gè)子表達(dá)式為(d+),對(duì)應(yīng)的匹配值為"1234";第二個(gè)字表達(dá)式為(w+),對(duì)應(yīng)的匹配值為"abcd",因此返回的數(shù)組為["1234:abcd", "1234", "abcd"]
還是上面的例子:
var result = /(d+):(w+)/.exec("1234:abcd"); console.log(result); // --> ["1234:abcd", "1234", "abcd"] console.log(result.input); // ---> "1234:abcd" console.log(result.index); // ---> 0
從上面返回的數(shù)組結(jié)果可知,數(shù)組添加了兩個(gè)額外的屬性,分別是:index, input
index: 匹配文本的第一個(gè)字符的位置
input: 指輸入的整體的文本
執(zhí)行exec函數(shù)時(shí),盡管是全局匹配的正則表達(dá)式,但是exec方法只對(duì)指定的字符串進(jìn)行一次匹配,
獲取字符串中第一個(gè)與正則表達(dá)式想匹配的內(nèi)容,并且將匹配內(nèi)容和子匹配的結(jié)果存儲(chǔ)到返回的數(shù)組中,例如:/d/g.exec("a22") ,返回的結(jié)果和上面的結(jié)果一樣: ["2"]
下面這個(gè)例子主要是全局捕獲和非全局捕獲的信息對(duì)比:
var text = "cat, bat"; var pattern1 = /.at/; var matches = pattern1.exec(text); alert(matches.index); //0 alert(matches[0]); //cat alert(pattern1.lastIndex); //0 matches = pattern1.exec(text); alert(matches.index); //0 alert(matches[0]); //cat alert(pattern1.lastIndex); //0 var pattern2 = /.at/g; var matches = pattern2.exec(text); alert(matches.index); //0 alert(matches[0]); //cat alert(pattern2.lastIndex); //3 matches = pattern2.exec(text); alert(matches.index); //5 alert(matches[0]); //bat alert(pattern2.lastIndex); //8 matches = pattern2.exec(text); alert(matches); //null alert(pattern2.lastIndex);//0
結(jié)論:
1.同一正則表達(dá)式,在全局匹配模式下,每次實(shí)例的lastIndex屬性的值為匹配文本最后一個(gè)字符的下一個(gè)位置
2.當(dāng) exec() 再也找不到匹配的文本時(shí),它將返回 null,并把 lastIndex 屬性重置為 0。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/84934.html
摘要:當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時(shí),等同于。并且,函數(shù)執(zhí)行完畢后,其活動(dòng)對(duì)象不會(huì)被銷(xiāo)毀,因?yàn)槟涿瘮?shù)的作用域鏈仍然在引用這個(gè)活動(dòng)對(duì)象。知道閉包被銷(xiāo)毀,創(chuàng)建函數(shù)的活動(dòng)對(duì)象才會(huì)被回收。 本著盡可能多的完善基礎(chǔ)知識(shí),打好基礎(chǔ),做一條有夢(mèng)想的咸魚(yú)。 1.數(shù)據(jù)類(lèi)型 基本數(shù)據(jù)類(lèi)型:Undefined,Null,Boolean,Number,String,一種復(fù)雜數(shù)據(jù)類(lèi)型Object 2.typeof操...
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書(shū)分享。本篇按照書(shū)里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書(shū)里的一些問(wèn)題。將會(huì)討論安全的類(lèi)型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話(huà)題。1. 安全的類(lèi)型檢測(cè)...
摘要:如果網(wǎng)頁(yè)中包含多個(gè)框架,那實(shí)際上就存在兩個(gè)以上不同的全局執(zhí)行環(huán)境,從而存在兩個(gè)以上不同版本的構(gòu)造函數(shù)。如果你從一個(gè)框架向另一個(gè)框架傳入一個(gè)數(shù)組,那么傳入的數(shù)組與在第二個(gè)框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。 如何檢測(cè)某個(gè)變量是否為數(shù)組? 《javascript 高級(jí)程序設(shè)計(jì)》原文摘錄: 自從 ECMAScript 3 做出規(guī)定以后,就出現(xiàn)了確定某個(gè)對(duì)象是不是數(shù)組的經(jīng)典問(wèn)題...
摘要:具體說(shuō)就是執(zhí)行流進(jìn)入下列任何一個(gè)語(yǔ)句時(shí),作用域鏈就會(huì)得到加長(zhǎng)語(yǔ)句的塊。如果局部環(huán)境中存在著同名的標(biāo)識(shí)符,就不會(huì)使用位于父環(huán)境中的標(biāo)識(shí)符訪問(wèn)局部變量要比訪問(wèn)全局變量更快,因?yàn)椴挥孟蛏纤阉髯饔糜蜴湣? 基本類(lèi)型和引用類(lèi)型的值 ECMAscript變量包含 基本類(lèi)型值和引用類(lèi)型值 基本類(lèi)型值值的是基本數(shù)據(jù)類(lèi)型:Undefined, Null, Boolean, Number, String ...
閱讀 3188·2021-11-24 09:38
閱讀 1414·2021-09-22 15:27
閱讀 3045·2021-09-10 10:51
閱讀 1576·2021-09-09 09:33
閱讀 991·2021-08-09 13:47
閱讀 2162·2019-08-30 13:05
閱讀 955·2019-08-29 15:15
閱讀 2624·2019-08-29 12:21