成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《javascript高級程序設(shè)計》筆記:正則表達式

ingood / 1795人閱讀

摘要:布爾值,表示是否設(shè)置了標志。正則表達式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回正則表達式的實例方法方法是否匹配基本語法參數(shù)為正則表達式為所要匹配的字符串返回值布爾值在模式與該參數(shù)匹配的情況下返回否則,返回。

高程書中對正則部分介紹的偏少,特別是元字符部分幾乎沒有介紹;我找了幾篇不錯的博客作為收錄:
正則表達式30分鐘入門教程
正則表達式-理論基礎(chǔ)篇
正則表達式-基礎(chǔ)實戰(zhàn)篇
最全的常用正則表達式大全

正則表達式的實例屬性

RegExp 的每個實例都具有下列屬性,通過這些屬性可以取得有關(guān)模式的各種信息。
global:布爾值,表示是否設(shè)置了 g 標志。
ignoreCase:布爾值,表示是否設(shè)置了 i 標志。
lastIndex:整數(shù),表示開始搜索下一個匹配項的字符位置,從 0 算起。
multiline:布爾值,表示是否設(shè)置了 m 標志。
source:正則表達式的字符串表示,按照字面量形式而非傳入構(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"
正則表達式的實例方法 test()方法【是否匹配】

基本語法:regular.test(string)
參數(shù):regular 為正則表達式;string 為所要匹配的字符串
返回值:布爾值

在模式與該參數(shù)匹配的情況下返回 true;否則,返回 false。在只想知道目標字符串與某個模式是否匹配,但不需要知道其文本內(nèi)容的情況下,使用這個方法非常方便,因此,test()方法經(jīng)常被用在 if 語句中

// 檢測輸入字符是否為漢字
/^[u4e00-u9fa5]{0,}$/.test("哈哈");    // true

// 校驗電話號碼
/^(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()方法常用語校驗用戶輸入的內(nèi)容是否符合規(guī)范

exec()方法【捕獲組】

基本語法:regular.exec(string)
參數(shù):regular 為正則表達式;string 為所要匹配的字符串
返回值:數(shù)組或null(未匹配成功時)

1.返回數(shù)組組成元素

先來個例子:

var result = /(d+):(w+)/.exec("1234:abcd");
console.log(result) // --> ["1234:abcd", "1234", "abcd"]

var result = /(d+):(w+)/.exec("呀!出錯了");
console.log(result) // --> null

上面可以看到,匹配不到字符則返回null,匹配到則返回一個數(shù)組;那么它的元素組成是怎么樣的呢?

返回的數(shù)組的第一個元素是與整個正則匹配的文本,后面的組成項依次為正則中的子表達式(組)
例子中的第一個子表達式為(d+),對應的匹配值為"1234";第二個字表達式為(w+),對應的匹配值為"abcd",因此返回的數(shù)組為["1234:abcd", "1234", "abcd"]

2.返回數(shù)組的詳細信息

還是上面的例子:

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ù)組添加了兩個額外的屬性,分別是:index, input
index: 匹配文本的第一個字符的位置
input: 指輸入的整體的文本

3.exec()匹配注意點

執(zhí)行exec函數(shù)時,盡管是全局匹配的正則表達式,但是exec方法只對指定的字符串進行一次匹配,
獲取字符串中第一個與正則表達式想匹配的內(nèi)容,并且將匹配內(nèi)容和子匹配的結(jié)果存儲到返回的數(shù)組中,例如:/d/g.exec("a22") ,返回的結(jié)果和上面的結(jié)果一樣: ["2"]

下面這個例子主要是全局捕獲和非全局捕獲的信息對比:

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.同一正則表達式,在全局匹配模式下,每次實例的lastIndex屬性的值為匹配文本最后一個字符的下一個位置
2.當 exec() 再也找不到匹配的文本時,它將返回 null,并把 lastIndex 屬性重置為 0。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84934.html

相關(guān)文章

  • es5學習筆記——拜讀JavaScript高級程序設(shè)計(持續(xù)更新)

    摘要:當以非構(gòu)造函數(shù)形式被調(diào)用時,等同于。并且,函數(shù)執(zhí)行完畢后,其活動對象不會被銷毀,因為匿名函數(shù)的作用域鏈仍然在引用這個活動對象。知道閉包被銷毀,創(chuàng)建函數(shù)的活動對象才會被回收。 本著盡可能多的完善基礎(chǔ)知識,打好基礎(chǔ),做一條有夢想的咸魚。 1.數(shù)據(jù)類型 基本數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String,一種復雜數(shù)據(jù)類型Object 2.typeof操...

    reclay 評論0 收藏0
  • 正則達式

    摘要:最全正則表達式總結(jié)驗證號手機號中文郵編身份證地址等是正則表達式的縮寫,作用是對字符串執(zhí)行模式匹配。學習目標了解正則表達式語法在中使用正則表達式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗,進行擴展延伸,同時指出書里的一些問題。將會討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時器等話題。1. 安全的類型檢測...

    yibinnn 評論0 收藏0
  • javascript高級程序設(shè)計筆記:檢測數(shù)組的方法

    摘要:如果網(wǎng)頁中包含多個框架,那實際上就存在兩個以上不同的全局執(zhí)行環(huán)境,從而存在兩個以上不同版本的構(gòu)造函數(shù)。如果你從一個框架向另一個框架傳入一個數(shù)組,那么傳入的數(shù)組與在第二個框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。 如何檢測某個變量是否為數(shù)組? 《javascript 高級程序設(shè)計》原文摘錄: 自從 ECMAScript 3 做出規(guī)定以后,就出現(xiàn)了確定某個對象是不是數(shù)組的經(jīng)典問題...

    wums 評論0 收藏0
  • JavaScript高級程序設(shè)計》(第3版)讀書筆記 第4章 變量、作用域和內(nèi)存問題

    摘要:具體說就是執(zhí)行流進入下列任何一個語句時,作用域鏈就會得到加長語句的塊。如果局部環(huán)境中存在著同名的標識符,就不會使用位于父環(huán)境中的標識符訪問局部變量要比訪問全局變量更快,因為不用向上搜索作用域鏈。 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數(shù)據(jù)類型:Undefined, Null, Boolean, Number, String ...

    lidashuang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<