標籤:擷取 位置 tco 多行 技術分享 注意 構造 大型 預設
這篇文章主要介紹了javascriptRegex和字串RegExp and String(一)的相關資料,需要的朋友可以參考下 前言 Regex是javascript非常重要和常用的功能,在jquery等大型架構中用的非常頻繁,最近抽時間學習瞭解了相關知識,記錄下來與需要的朋友分享。 思維導圖: RegExp(Regex)的建立方式 可以通過兩種方式建立一個RegExp,具體如下: 通過/…./的方式來建立Regex(注意: /……/兩邊是沒有單引號或雙引號的) 通過RegExp構造方法來建立一Regex 為了更好的描述模式,Regex提供了3個標識,分別是: g/i/m g: 全域匹配:在整個字串中匹配,而不是在第一次匹配後之後停止 i: 忽略大小寫匹配 m: 對多行字串中的每一行,應用行首和行末的特殊字元(分別是^和$) 具體看參照下面代碼加深理解: RegExp執行個體的主要屬性 根據RegExp的建構函式,我們大概也能猜到RegExp的主要屬性,關於執行個體屬性,瞭解下就可以了。但有一點要注意:這 些執行個體屬性是不能通過for in進行遍曆擷取的。 可參照下面代碼加深理解:
RegExp執行個體的主要方法 - test 根據該方法非常簡單,只有一個參數,常用來驗證輸入的參數與Regex模式是否匹配,如果匹配返回true,否則返回 false. 可參照下面代碼加深理解:
RegExp執行個體的主要方法 - exec 法該方法是一個非常常用的方法,需要好好理解。它只接收一個參數,即要匹配的字串,傳回值卻是一個數組arr,數組裡儲存的是第一個匹配項的相關資訊,包括: input: 要匹配的字串,exec方法的輸入值 index:匹配性在字串中的位置 arr[0]: 模式比對的字串 arr[1]…arr[n]: 第n個擷取的群組字串 使用該方法時要注意:如果在Regex中未指定全域標誌g,則每次執行始終返回的都是第一個匹配項,如果設定了全域標誌g,每次調用exec,則會在字串中繼續尋找新匹配項 可參照下面代碼加深理解:
RegExp建構函式屬性 關於函數屬性,可以參照其它程式設計語言(如java)中類的靜態屬性來理解,這些屬性被所有的RegExp執行個體共用,也就是所有的RegExp都可以訪問和修改這些屬性,當某個執行個體執行test或exec方法時,這些屬性的值也將跟著發生變化 關於這些屬性,我們可以按照自己的理解記憶: input : 需要進行模式比對的字串,test或exec方法的輸入參數。 參數別名: $- lastMatch : 最近一次匹配項 。 參數別名:$& leftContext : 匹配項左邊的字串。參數別名:$` rightContext : 匹配項右邊的字串 。 參數別名:$‘ 1,2,$3….: 擷取的群組對應的字串 。 當然這些值,完全可以通過RegExp執行個體執行exec返回的結果計算得到,那為什麼要在建構函式RegExp中設定這些屬性呢?* 可參照下面代碼加深理解: RegExp - 元字元 與其它語言中的Regex類似, jsRegex中也存在一些元字元,這些字元有特殊的用途和含義,所以在使用的過程中,需要對這些字元進行轉義,通過在這些字元前加上‘\‘ 進行轉義處理. JS正則表達是的元字元有: ( [ { \ ^ $ | ) ? * + . ] } RegExp - 貪婪匹配和懶惰匹配 貪婪匹配就是在Regex的匹配過程中,預設會使得匹配長度越大越好。在JSRegex中,懶惰限定符是 ‘?‘ ,在模式中添加 ‘?‘ 則要求是懶惰匹配。具體參照下面代碼來理解:
以上內容是小編給大家分享的javascriptRegex和字串RegExp and String。
javascriptRegex和字串RegExp