本文為H5EDU 機構官方HTML5培訓教程,主要介紹:JavaScript強化教程—— 正則表達式回溯
下面的例子演示了處理正則表達式分之的過程:
/h(ello|appy) hippo/. test("hello there,happy hippo");
這個正規表示式"hello hippo"或"happy hippo".匹配過程開始時,首先會找一個h,目標字串的首字母恰好是h,於是立刻被找到。接下來,子表達式(ello|appy)提供了兩個處理選項,正規表示式選擇最左側的選項(分之選擇總是從左向右進行),檢查ello是否匹配字串中的下一個字符,匹配成功,正則表達式進行匹配隨後的空格,由於hippo中的h無法匹配下一個字串中的t,因此匹配無法繼續。此時,正規表示式還不能放棄,因為它還未城市完所有的可選項,隨後他會回溯到最近的決策點(匹配萬首字符h後面的位置)並嘗試匹配第二個分支。匹配並沒有成功,也沒有更多的可選項,所以正則表達式認為從字串的第一個字元匹配是不能成功的,因此從第二個字元開始重新嘗試。他沒有找到h,於是繼續搜尋知道在第14個字串的位置匹配到「happy」中的h,然後會再次進入分支過程,這次未能匹配ello,但是在回溯並嘗試第二個分支過程後,匹配到了整個字串“happy hippo”。
配對成功。