本篇接上篇的基礎篇,是對基礎篇從原理上加以理解。
捕獲組就是把正規表示式中的子表示式匹配的內容,儲存到記憶體中以數字編號的組裡,方便後面引用。
編號規則指的是以數字為捕獲組進行編號的規則。
規則中編號為0的捕獲組,指的是正規表示式整體。
捕獲組通過從左到右計算其左開括號來編號
舉例:正規表示式可以用來匹配格式為yyyy-mm-dd的日期,為了在下表中得以區分,月和日分別採用了\d和\d\d這兩種寫法。
用以上正規表示式匹配字串:2008-12-31,匹配結果為: 編號
捕獲組匹配內容
0
(\d)-(\d-(\d\d))
2008-12-31
1
(\d)
2008
2
(\d-(\d\d))
12-31
3
(\d\d) 31
反向引用是用來查詢或限定重複、查詢或限定指定標識配對出現等等。
這個定義有點難理解,但其實說起來簡單,就乙個字:重複。比如 『1122334455』 如何用正則匹配這種數字?
按照前面的知識,會發現有點不知所措。但用反向引用就很簡單:
var reg = /(\d)\1/g
上面正規表示式中,整個表示式的編號是 0 。(\d) 捕獲組的編號是 1. 而 \1 就是反向引用,引用的是分組1. 匹配過程如下:
比如,還可以再複雜一點:
在使用修飾匹配次數的量詞時,比如:"", "", "?", "*", "+",具體匹配的次數隨被匹配的字串而定。這種重複匹配不定次數的表示式在匹配過程中,總是盡可能多的匹配,即「貪婪匹配原則」。比如,針對文字 "d***d***d",舉例:
var reg = /\d+/
console.log(reg.exec('122222222222222222q')) // 122222222222222222
非貪婪模式:
在修飾匹配次數的特殊符號後再加上乙個 "?" ,則可以使匹配次數不定的表示式盡可能少的匹配,使可匹配可不匹配的表示式,盡可能的 "不匹配"。這種匹配原則叫作 "非貪婪" 模式,也叫作 "勉強" 模式。如下圖:
前端原理篇 跨域
前端目錄 前後端分離是當前常見的開發模式,此時瀏覽器請求前端靜態資源和後端服務資料的目標位址是不同的。這就是我們常見的跨域問題。同源策略是瀏覽器的一種安全機制。不遵守同源策略的操作是被禁止的,這就是我們所說的跨域。ps css js和等靜態資源是不受同源策略限制的。cors跨域解決方案 cors是h...
倒車雷達原理篇
往後倒一點,再往後,打方向盤,打多了,回一點再倒,好,停!相信一般的車主在停車場泊位時,都會遇到車輛保管員的 熱情招呼 車技純熟的倒 也與人工提示配合默契 車技一般 方向感較差的,就經常使負責指揮的那位人士高度緊張,脾氣急躁的還少不了擠兌車主幾句。可是,並不是所有車主都有幸得到 人工倒車指引,比如說...
iOS知識原理篇
weak策略表明該屬性定義了一種 非擁有關係 nonowning relationship 為這種屬性設定新值時,設定方法既不保留新值,也不釋放舊值。此特質同assign類似 然而在屬性所指的物件遭到摧毀時,屬性值也會清空 nil out runtime對註冊的類,會進行布局,會將 weak 物件放...