摘要:第二個循環使用構造函數在每次循環中創建正則表達式。布爾值,表示是否設置了標志。整數,表示開始搜索下一個匹配項的字符位置,從算起。正則表達式的字符串表示,按照字面量形式而非傳入構造函數中的字符串模式返回。
1.var someDate = new Date(Date.parse("May 25, 2004"));可用來計算時間差
//取得開始時間 var start = Date.now(); //調用函數 doSomething(); //取得停止時間 var stop = Date.now(), result = stop – start;
new Date()也行,不過需要轉換成字符串來計算
2.創建正則表達式:
var expression = / pattern / flags ; var pattern1 = /[bc]at/i; var pattern2 = new RegExp("[bc]at", "i");
正則表達式可以帶有一個或多個標志:
g:表示全局( global)模式,即模式將被應用于所有字符串,而非在發現第一個匹配項時立即
停止;
i:表示不區分大小寫( case-insensitive)模式,即在確定匹配項時忽略模式與字符串的大小寫;
m:表示多行( multiline)模式,即在到達一行文本末尾時還會繼續查找下一行中是否存在與模
式匹配的項。
/* * 匹配字符串中所有"at"的實例 */ var pattern1 = /at/g; /* * 匹配第一個"bat"或"cat",不區分大小寫 */ var pattern2 = /[bc]at/i; /* * 匹配所有以"at"結尾的 3 個字符的組合,不區分大小寫 */ var pattern3 = /.at/gi;
3.由于 RegExp 構造函數的模式參數是字符串,所有元字符都必須雙重轉義
/[bc]at/ "[bc]at" /.at/ ".at" /name/age/ "name/age" /d.d{1,2}/ "d.d{1,2}" /whello123/ "whello123"
4.正則表達式字面量始終會共享同一個 RegExp 實例,而使用構造函數創建的每一個新 RegExp 實例都是一個新實例
var re = null, i; for (i=0; i < 10; i++){ re = /cat/g; re.test("catastrophe"); } for (i=0; i < 10; i++){ re = new RegExp("cat", "g"); re.test("catastrophe"); }
在第一個循環中,即使是循環體中指定的,但實際上只為/cat/創建了一個 RegExp 實例。由于實例屬性不會重置,所以在循環中再次調用 test()方法會失敗。這是因為第一次調用 test()找到了"cat",但第二次調用是從索引為 3 的字符(上一次匹配的末尾)開始的,所以就找不到它了。由于會測試到字符串末尾,所以下一次再調用 test()就又從開頭開始了。
第二個循環使用 RegExp 構造函數在每次循環中創建正則表達式。因為每次迭代都會創建一個新的RegExp 實例,所以每次調用 test()都會返回 true
5.RegExp實例屬性:
RegExp 的每個實例都具有下列屬性,通過這些屬性可以取得有關模式的各種信息。
global:布爾值,表示是否設置了 g 標志。
ignoreCase:布爾值,表示是否設置了 i 標志。
lastIndex:整數,表示開始搜索下一個匹配項的字符位置,從 0 算起。
multiline:布爾值,表示是否設置了 m 標志。
source:正則表達式的字符串表示,按照字面量形式而非傳入構造函數中的字符串模式返回。
6.RegExp實例方法:
RegExp 對象的主要方法是 exec(),該方法是專門為捕獲組而設計的
var text = "mom and dad and baby"; var pattern = /mom( and dad( and baby)?)?/gi; var matches = pattern.exec(text); alert(matches.index); // 0 alert(matches.input); // "mom and dad and baby" alert(matches[0]); // "mom and dad and baby" alert(matches[1]); // " and dad and baby" alert(matches[2]); // " and baby"
其中, index 表示匹配項在字符串中的位置,而 input 表示應用正則表達式的字符串
正則表達式的第二個方法是 test(),它接受一個字符串參數。在模式與該參數匹配的情況下返回true;否則,返回 false。
var text = "000-00-0000"; var pattern = /d{3}-d{2}-d{4}/; if (pattern.test(text)){ alert("The pattern was matched."); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105190.html
摘要:如果為假值,不傳或者傳入,函數都會返回但是,傳入這個值是完全有可能的,所以這種判斷形勢是不正確的或者使用來判斷也可以原始類型優于封裝類型對象擁有六個原始值基本類型布爾值,數字,字符串,,和對象。 作為一個前端新人,多讀書讀好書,夯實基礎是十分重要的,正如蓋樓房一樣,底層穩固了,才能越壘越高。從開始學習到現在,基礎的讀了紅寶書《JavaScript高級程序設計》,犀牛書《JavaScri...
摘要:在通過對象字面量定義對象時,實際上不會調用構造函數相當于因為是松散類型數據,所以類型也擁有著同樣的特性。數組的每一項可以保存任何類型的數據,且數組的大小是可以動態調整的。對數組中的每一項運行給定函數,返回該函數會返回的項組成的數組。 1.在通過對象字面量定義對象時,實際上不會調用 Object 構造函數 var person = { name : Nicholas, a...
摘要:在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。標記清除是目前主流的垃圾收集算法,這種算法的思想是給當前不使用的值加上標記,然后再回收其內存 1.在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。 2.當從一個變量向另一個變量復制引用類型的值時,兩個變量實際上將引用同一個對象,因此,改變其中一個變量,就會...
摘要:函數實際上是對象。所以需要消除這種緊耦合。函數內部屬性引用的是函數據以執行的環境對象或者也可以說是值函數的名字僅僅是一個包含指針的變量而已。因此,即使是在不同的環境中執行,全局的函數與函數指向的仍然是同一個函數。 1.函數實際上是對象。每個函數都是 Function 類型的實例,而且都與其他引用類型一樣具有屬性和方法 2.由于函數名僅僅是指向函數的指針,因此函數名與包含對象指針的其他變...
摘要:是一個數值可以被轉換成數值不能轉換成數值可以被轉換成數值十六進制數八進制數十進制數十六進制數可以避免,無法使用方法轉換成字符串的情況 1.JavaScript由三個部分組成:ECMAScript(提供核心語言功能)、DOM(文檔對象模型,提供訪問和操作網頁內容的方法和接口)、BOM(瀏覽器對象模型,提供與瀏覽器交互的方法和接口) 2.JavaScript概念:是一種專為與網頁交互而設計...
閱讀 1438·2021-09-28 09:44
閱讀 2501·2021-09-28 09:36
閱讀 1144·2021-09-08 09:35
閱讀 1982·2019-08-29 13:50
閱讀 810·2019-08-29 13:29
閱讀 1130·2019-08-29 13:15
閱讀 1724·2019-08-29 13:00
閱讀 2988·2019-08-26 16:16