基本

後引用用於匹配先前由捕獲組匹配的相同文字。這有助於重複使用模式的先前部分並確保兩個字串匹配。

例如,如果你要驗證字串是否有從 0 到 9 的數字,分隔符,如連字元,斜槓,甚至空格,小寫字母,另一個分隔符,然後從 0 到 9 的另一個數字,你可以使用這樣的正規表示式:

[0-9][-/ ][a-z][-/ ][0-9]

這將匹配 1-a-4,但它符合 1-a/41 a-4。如果我們希望分隔符匹配,我們可以使用捕獲組和後引用。後引用將檢視在指示的捕獲組中找到的匹配,並確保後引用的位置完全匹配。

使用我們的相同示例,正規表示式將成為:

[0-9]([-/ ])[a-z]\1[0-9]

\1 表示模式中的第一個捕獲組。通過這個小變化,正規表示式現在匹配 1-a-41 a 4 但不匹配 1 a-41-a/4

用於反向引用的數字取決於捕獲組的位置。數字可以是 1 到 9,可以通過計算捕獲組來找到。

([0-9])([-/ ])[a-z][-/ ]([0-9])
|--1--||--2--|          |--3--|

巢狀捕獲組稍微更改此計數。首先計算外部捕獲組,然後計算下一級,然後繼續直到離開巢:

(([0-9])([-/ ]))([a-z])
 |--2--||--3--|
|-------1------||--4--|