基本
後引用用於匹配先前由捕獲組匹配的相同文字。這有助於重複使用模式的先前部分並確保兩個字串匹配。
例如,如果你要驗證字串是否有從 0 到 9 的數字,分隔符,如連字元,斜槓,甚至空格,小寫字母,另一個分隔符,然後從 0 到 9 的另一個數字,你可以使用這樣的正規表示式:
[0-9][-/ ][a-z][-/ ][0-9]
這將匹配 1-a-4
,但它也符合 1-a/4
或 1 a-4
。如果我們希望分隔符匹配,我們可以使用捕獲組和後引用。後引用將檢視在指示的捕獲組中找到的匹配,並確保後引用的位置完全匹配。
使用我們的相同示例,正規表示式將成為:
[0-9]([-/ ])[a-z]\1[0-9]
\1
表示模式中的第一個捕獲組。通過這個小變化,正規表示式現在匹配 1-a-4
或 1 a 4
但不匹配 1 a-4
或 1-a/4
。
用於反向引用的數字取決於捕獲組的位置。數字可以是 1 到 9,可以通過計算捕獲組來找到。
([0-9])([-/ ])[a-z][-/ ]([0-9])
|--1--||--2--| |--3--|
巢狀捕獲組稍微更改此計數。首先計算外部捕獲組,然後計算下一級,然後繼續直到離開巢:
(([0-9])([-/ ]))([a-z])
|--2--||--3--|
|-------1------||--4--|