標籤:
本文和大家分享的主要是javascript 的參考型別RegExp相關內容,一起來看看吧,希望對大家 學習javascript有所協助。 · 字面量 var reg=/\d+/g; console.log( reg.test("789456"));//true · 建構函式 var reg2=new RegExp("\\d+","g");console.log(reg2.test("1234444456"));//trueconsole.log(reg2.test("asdsa"));//false 修飾符 · i: 表示不區分大小寫(case-insensitive )模式,即在確定匹配項時忽略模式與字串的大小寫; · m: 表示多行(multiline )模式,即在到達一行文本末尾時還會繼續尋找下一行中是否存在與模 式匹配的項。 · g: 表示全域(global )模式,即模式將被應用於所有字串,而非在發現第一個匹配項時立即 停止; 元字元 · 單個字元數字 · . 匹配除分行符號以外的任一字元 · [a-zA-Z0-p] 與 [^a-zA-Z0-p] 匹配方括弧中的任一字元,前面代 ^ 是匹配不在方括弧中的任一字元; · \d 與 \D 匹配數字和匹配非數字; · \w 與 \W 匹配字元和匹配非字母 · 空白字元 · \O 匹配 null 字元 · \b 匹配空白字元 · \f 匹配換頁符 · \n 匹配分行符號 · \r 匹配斷行符號符 · \s 和 \S 匹配空白字元,空格、定位字元或分行符號。大寫的 S 是匹配非Null 字元 · \t 匹配製表符 · 定位器 · ^ 行首匹配 · $ 行尾匹配 · \A 只匹配字串的開始處 · \b \B 匹配單詞便捷,詞在 [] 內無效,匹配非單詞邊界 · G 匹配當前搜尋的開始位置 · \Z \z 匹配字串結束處或行尾,只匹配字串結束處 · 限定符 · x? 匹配 0 個或一個 x · x* 匹配 0 個或者任意多個 x · x+ 匹配一個或者多個 · x{m,n} 匹配 m-n 個 x ; · 分組 · (?:x) 匹配 x 但不記錄匹配結果(匹配不捕獲) · x(?=y) 當 x 後面接 y 時匹配 x · x(?!y) 當 x 後不是 y 時匹配 x · 引用 · \1…\9 $1…$9 返回就割在模式比對期間找到的,最近儲存的部分 · 或模式 · x|y|z 匹配 x 或者 y 或者 z 屬性 執行個體屬性 RegExp 的每個執行個體都具有下列屬性,通過這些屬性可以取得有關模式的各種資訊。 · global :布爾值,檢測是走設定 g 標記 · ignoreCase :布爾值,檢測是否設定 i 標記 · nultiline : 布爾值,檢測是否設定了 m 標記 · lastIndex : 整數,表示開始搜尋下一個匹配項的字元位置,從 0 算起。 · source 返回Regex的字串表示 , 按照字面量形式而非傳入建構函式中的字串模式返回。 通過這些屬性可以獲知一個Regex的各方面資訊,但卻沒有多大用處,因為這些資訊全都包含在模式聲明中。 var pattern1 = /\[bc\]at/i;console.log(pattern1.global); //falseconsole.log(pattern1.ignoreCase); //trueconsole.log(pattern1.multiline); //falseconsole.log(pattern1.lastIndex); //0console.log(pattern1.source); //"\[bc\]at" var pattern2 = new RegExp("\\[bc\\]at", "i");console.log(pattern2.global); //falseconsole.log(pattern2.ignoreCase); //trueconsole.log(pattern2.multiline); //falseconsole.log(pattern2.lastIndex); //0console.log(pattern2.source); //"\[bc\]at" 儘管第一個模式使用的是字面量,第二個模式使用了 RegExp 建構函式,但它們的 source 屬性是相同的。可見, source 屬性儲存的是規範形式的字串,即字面量形式所用的字串。 建構函式屬性 · $_ input 返回最近一次匹配的字串 · $& lastMatch 返回最近一次的匹配項 · $+ lastParen 返回最近一次匹配的擷取的群組 · $` leftContext 返回被尋找的字串中從字串開始位置到最後匹配之前的位置之間的字元 · $’ rightContext 返回被搜尋的字串中從最後一個匹配位置開始到字串結尾之間的字元 · $* multiline 檢測運算式是否採用多行匹配 m 方法 執行個體方法 test() 方法在字串中檢測模式比對,返回 true 或 false var re = null, i; for (i = 0; i < 10; i++) { re = /cat/g; console.log(re.test("catastrophe")); //true } for (i = 0; i < 10; i++) { re = new RegExp("cat", "g"); console.log(re.test("catastrophe")); //true } RegExp 對象的主要方法是 exec() ,該方法是專門為擷取的群組而設計的。 exec() 接受一個參數,即 要應用模式的字串,然後返回包含第一個匹配項資訊的數組;或者在沒有匹配項的情況下返回 null 。 返回的數組雖然是 Array 的執行個體,但包含兩個額外的屬性: index 和 input 。其中, index 表示匹配 項在字串中的位置,而 input 表示應用Regex的字串。在數組中,第一項是與整個模式比對 的字串,其他項是與模式中的擷取的群組匹配的字串(如果模式中沒有擷取的群組,則該數組只包含一項)。 var text = "cat, bat, sat, fat"; var pattern1 = /.at/; var matches = pattern1.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0 matches = pattern1.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0 var pattern2 = /.at/g; var matches = pattern2.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern2.lastIndex); //3 matches = pattern2.exec(text);console.log(matches.index); //5console.log(matches[0]); //batconsole.log(pattern2.lastIndex); //8 第一個模式 pattern1 不是全域模式,因此每次調用 exec() 返回的都是第一個匹配項( “cat” )。而第二個模式 pattern2 是全域模式,因此每次調用 exec() 都會返回字串中的下一個匹配項,直至搜尋到字串末尾為止。此外,還應該注意模式的 lastIndex 屬性的變化情況。在全域匹配模式下, lastIndex 的值在每次調用 exec() 後都會增加,而在非全域模式下則始終保持不變。 字串方法 · match 找到一個或者多個Regex的匹配 · replace 替換與Regex匹配的子串 · search 檢索與Regex匹配的值 · split 把字串分割為字串數組來源: liuguoquan727
JavaScript參考型別RegExp