所有指南
開發者

Regex 取代:使用捕獲群組重新排列文字

不用重新輸入即可交換年、月、日——並了解為什麼相符的日期仍可能無效。

要把 2026-10-15 改成 15/10/2026,可以分別擷取年、月、日,再以不同順序組合這些擷取結果。你不需要為每個日期手動輸入新的替換文字。

這個範例只改變文字格式,不會檢查每個日期是否存在。當你在試算表中使用結果或發布內容時,這個區別很重要。

從包含錯誤日期的小樣本開始

開啟 Regex 遊樂場,然後在 測試文字 中貼上:

Launch: 2026-10-15
Review: 2026-11-02
Invalid: 2026-99-99
Short: 2026-1-5

在 正規運算式 中,輸入以下模式(不含斜線分隔符號):

\b(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\b

三個具名群組分別擷取四位數字、兩位數字和兩位數字。字元邊界可避免在較長的字元序列中誤判,但這並不代表它是日曆驗證器。

在 選項 下,保持啟用 尋找所有相符項目。這對應 g 旗標。你應該會看到三個相符項目;最後一行中個位數的月份和日期不符合此模式。

在替換文字中重新排列擷取結果

選擇 取代,然後在 替換為 中輸入以下內容。在手機上,請先開啟 結果 以進入替換檢視。

$<day>/$<month>/$<year>

替換預覽應顯示:

Launch: 15/10/2026
Review: 02/11/2026
Invalid: 99/99/2026
Short: 2026-1-5

無效的日期也被改變了。只計算數字的模式無法知道每個月有幾天。當日曆有效性很重要時,請使用日期解析器;當你已確認輸入日期有效且只需要不同顯示格式時,才使用此替換。

停用 尋找所有相符項目 只會改變第一個日期。工具的相符計數會從三個降為一個。如果替換似乎在第一次出現後就停止,請先檢查該旗標,再重寫模式。

編號群組也可以

若要使用較短的模式,請移除名稱:

\b(\d{4})-(\d{2})-(\d{2})\b

然後使用此替換:

$3/$2/$1

對於此樣本,它會產生相同的輸出。群組編號依開啟的捕獲括號從左到右排列。如果你預期之後會編輯模式,具名群組較易於維護。

遊樂場使用 JavaScript 替換語法。在替換欄位中,$1 插入第一個捕獲,$<year> 插入具名捕獲,$& 插入整個相符項目,$$ 插入字面美元符號。MDN 的替換參考 列出了這些形式。其他編輯器和正規運算式引擎可能使用不同的替換表示法。

保留來源並檢查例外

下載 範例輸入、所有相符輸出 和 僅第一個相符輸出 進行比較。設定檔 保留了模式和替換;該 JSON 中的雙反斜線是字串跳脫,不是要貼到模式欄位的額外反斜線。

在 2026 年 10 月 15 日,我們使用與遊樂場相同的評估函式執行這些範例。兩種捕獲風格產生相同的輸出;關閉全域旗標改變了一個相符項目,而無效日期仍然相符。結果記錄 包含這些檢查和檔案的雜湊值。

對於實際草稿,請保留未修改的副本,並在測試中包含一些不應改變的行。看似合理的預覽並不能證明每個替換都是正確的。