JS程式設計建議 38 正確認識正規表示式工作機制

2021-09-22 19:12:29 字數 860 閱讀 6745

建議38:正確認識正規表示式工作機制

有很多因素影響正規表示式的效率。首先,正規表示式適配的文字千差萬別,部分匹配時比完全不匹配所用的時間要長。其次,每種瀏覽器的正規表示式引擎也有不同的內部優化。要有效使用正規表示式,重要的是理解它們的工作機制。乙個正規表示式處理的基本步驟如下:

第1步,編譯。在建立了乙個正規表示式物件後,瀏覽器先要檢查模板有沒有錯誤,然後將它轉換成乙個本機**例程,用於執行匹配工作。如果將正規表示式賦給乙個變數,就可以避免重複執行此步驟。

第2步,設定起始位置。當乙個正規表示式投入使用時,要先確定目標字串中開始搜尋的位置。它是字串的起始位置,或者由正規表示式的lastindex 屬性指定,但當它從第4步返回到這裡的時候,此位置將位於最後一次嘗試起始位置推後乙個字元的位置上。

瀏覽器廠商優化正規表示式引擎的方法:在這一階段中通過早期**跳過一些不必要的工作。例如,如果乙個正規表示式以^開頭,ie和chrome瀏覽器通常判斷在字串起始位置上是否能夠匹配,進而避免不明智地搜尋後續位置。另乙個例子是匹配第三個字母是x的字串,聰明的方法是先找到x,然後再將起始位置回溯兩個字元。

第3步,匹配每個正規表示式的字元。正規表示式一旦找好起始位置,將會乙個個地掃瞄目標文字和正規表示式模板。當乙個特定字元匹配失敗時,正規表示式將試圖回溯到掃瞄之前的位置上,然後進入正規表示式其他可能的路徑。

第4步,匹配成功或失敗。如果在字串的當前位置上發現乙個完全匹配的字元,那麼正規表示式宣布成功。如果正規表示式的所有可能路徑都嘗試過了,但沒有成功匹配,那麼正規表示式引擎回到第2步,從字串的下乙個字元重新嘗試。只有字串中的每個字元(以及最後乙個字元後面的位置)都經歷了這樣的過程之後還沒有成功匹配,正規表示式才會宣布徹底失敗。

牢記這一過程將有助於判別那些影響正規表示式效能問題的型別。

正確認識SEO

w m v7 j 因為seo不是一種被神化的技術,並不是所有的 行業在使用seo技術後就會帶來效益的。2 z4 c6 q4 3 q 上面已經講過了,seo是一種具有週期性 長期性 專業性的技術,在 建設之初的策劃到 後期的維護都應該具有一定的計畫並且不斷持續執行的。準確統計,易優科技的官方 在未改版...

正確認識html與body

標準與非標準模式 standard模式後,定義和解析將更加嚴格,所有定義必須從頂級標籤html開始。可以理解為傳統非standard模式定義body的用法,standard模式下都必須在html上定義。高度100 的意義 認為standard模式下定義容器高度100 無效,是錯誤的理論。如果需要bo...

正確認識計算機故障

一 什麼是計算機故障,主要分為哪些故障?計算機在使用過程中必定會遇到或多或少的故障,這些故障主要包括由軟體引起的故障,即軟故障 硬體引起的故障,即硬故障。一般情況下,軟故障多是由於以下原因造成的 作業系統檔案丟失或損壞。登錄檔設定錯誤。計算機病毒 木馬或惡意軟體引起的故障。使用者不當操作引起的故障。...