🍽 這道菜在做什麼
正規表達式(regex)是一套描述「字串長相」的迷你語言。從一堆文字裡撈出所有 email、驗證使用者輸入的手機號碼格式對不對、把一份 CSV 裡格式不一的日期統一抓出來,靠的都是它。問題是這套語言的語法又密又抽象,\d、+、?、(?=...)、{2,4} 這些符號擠在一起,半年沒寫就忘光,每次都得重新 Google、上 Stack Overflow 翻舊答案、再到測試網站慢慢試,一段五分鐘該寫完的東西常常拖成半小時。
這道配方把這件事反過來:你不必先會 regex,只要用白話把「我想抓什麼、不想抓什麼」講清楚,AI 就幫你產出完整表達式,而且逐個符號拆解給你看,再附上會成功與會失敗的測試字串。最需要它的是三種人:偶爾才碰 regex、語法總是記不牢的後端與前端工程師;要從報表、log、訪談逐字稿裡清洗資料的資料處理者;以及正在自學、想看懂別人程式碼裡那串符號的初學者。對天天要處理表單驗證、資料清洗的人來說,一天省下的零碎查詢時間累積起來相當可觀,而且因為附帶逐段教學,你用幾次就真的把語法學起來了。
為什麼這樣設計
這段提示詞的關鍵在於把「白話規則」和「使用環境」分成兩個獨立欄位。很多人忽略環境,但 regex 在不同引擎下的行為差很多:JavaScript 沒有 \d 以外的某些 Unicode 屬性簡寫、Python 的 re 模組旗標寫法不同、PCRE(PHP、grep)又支援更多進階語法。先講清楚環境,AI 才不會給你一段在你的語言裡跑不動的表達式。
第二個設計是「逐段拆解每個符號的意思」。這一步把 AI 從「黑箱給答案」變成「邊給邊教」,你能立刻檢查它的理解對不對——比如你要的是「09 開頭」,但它寫成 ^9,看拆解就能當場抓到。第三個關鍵是強制要求「3 個成功、3 個失敗」的測試字串。regex 最容易出錯的地方是邊界:少一碼、多一個空白、全形數字、結尾忘了鎖 $。要求 AI 自己舉反例,等於逼它把邊界想清楚,也給了你現成的驗證素材。最後請它附上實際語言的使用範例(test()、match()、re.fullmatch()),你複製貼上就能跑,不必再煩惱「拿到表達式後該怎麼接進程式」。
怎麼用
第一步,到上方按鈕指定的 AI 對話工具,把整段提示詞複製過去。第二步,把 {白話描述} 換成你真正要比對的規則,講得越具體越好——不要只寫「比對日期」,而要寫「比對 YYYY-MM-DD 格式,年份四碼、月份 01 到 12、日期 01 到 31」。第三步,在使用環境欄填上你的語言,例如「JavaScript」或「Python + re」,不填它預設給 JavaScript。第四步按 Enter,AI 會回給你四個區塊:完整 regex、逐段拆解、測試字串、範例程式碼。第五步,這是最重要的一步——把它給的成功與失敗測試字串實際跑一次,確認真的如預期。這正好呼應配方的三個步驟:描述規則、取得 regex、用測試案例驗證。想看更多直接複製就能用的提示詞,可以逛逛 /recipes。
調整技巧
拿到結果後若不夠貼合,用講的微調就好。最常見的是「太鬆」或「太緊」:如果它連格式錯的字串也比對成功,回它「請鎖頭尾,加上 ^ 和 $,只接受完全符合的」;如果它把合法的也擋掉,把漏掉的合法樣本貼給它「這個應該要成功,請放寬」。要處理大小寫不分,就說「加上忽略大小寫的旗標」。要它在程式裡擷取某一段,請它「用具名群組 (?<year>...) 包起來,我要取年份」。這些都呼應配方提供的兩個變化版:把看不懂的舊 regex 貼上請它白話翻譯,或請它檢查有沒有「災難性回溯」風險。需要把驗證規則包成可重複使用的小工具,可以接著到 /generator 找產生器類的配方。
注意事項
regex 適合「格式驗證」,但不適合拿來扛安全或法遵的最後一道防線。用 regex 驗 email 格式可以擋掉明顯打錯的,但不能保證信箱真的存在,真正確認還是得寄驗證信。涉及金流、身分證、信用卡號這類敏感欄位時,格式對不代表資料合法,後端仍要做正式校驗與遮罩,別把 AI 給的表達式當成唯一防線。另外,貼給 AI 的測試字串請用假資料,不要把真實客戶的個資、真實卡號直接貼進對話框。AI 偶爾也會寫出有「災難性回溯」風險的表達式(巢狀的 (a+)+ 這類),遇到要處理大量或不可信輸入時,務必另外請它檢查效能。最後再強調一次:任何 regex 上線前都要用真實資料跑過,AI 的測試案例只是起點,不是保證。
台灣情境案例
台中一家做電商客服系統的小團隊,後端工程師阿凱要驗證使用者填的台灣手機號碼。他過去都土法煉鋼,只檢查「是不是 10 碼數字」,結果一堆 0912 開頭以外的怪號碼也過關,客服簡訊一直發失敗。他用這道配方,白話寫「台灣手機,09 開頭、共 10 碼、純數字」,環境填 JavaScript,AI 給他 ^09\d{8}$,逐段拆解「^09 鎖開頭是 09、\d{8} 接八個數字、$ 鎖結尾」,還附上「0912345678 成功、0812345678 失敗、09123456789 失敗」的測試案例。阿凱實測後發現原本漏掉的「全形數字」也該擋,回頭請 AI 補強。整件事從他預估的半小時縮到不到五分鐘,而且他終於搞懂 ^ 和 $ 的差別,下次自己就會寫。隔壁做資料分析的同事看到,也拿去清洗一批格式亂七八糟的發票號碼,同樣一句白話搞定。
延伸用法
這道配方能變化的方向很多。資料清洗時,可以請 AI 一次產出「抓取用」和「替換用」兩段 regex,搭配編輯器的尋找取代批次處理整份文件。寫爬蟲或 log 分析時,請它把多個欄位用具名群組包成一段,一次擷取日期、等級、訊息。維護舊專案時,把前人留下、沒人看得懂的 regex 貼上,用「解釋現有版」翻譯成白話再決定要不要改。它也很適合接進更大的工作流:先用這道配方產出驗證規則,再到 /workflows 看怎麼把表單驗證、資料清洗串成一條自動化流程。把常用的幾段 regex(手機、email、身分證、日期)連同拆解一起存成自己的小抄,下次直接拿出來改,效率會再上一層。
材料
- AI 對話工具(Claude/ChatGPT/Gemini)
- 你想比對的字串規則描述
步驟
- 描述規則:用白話講清楚要比對什麼、不要比對什麼。
- 取得 regex:拿到表達式與逐段拆解。
- 用測試案例驗證:用它給的成功/失敗範例確認正確。
配方本體(可複製帶走)
# 任務
請幫我寫一段正規表達式(regex)。
我想比對的規則(白話描述):{例如:台灣手機號碼,09 開頭共 10 碼}
使用環境:{例如 JavaScript/Python/PCRE,預設 JavaScript}
請輸出:
1. 完整 regex(含旗標說明)
2. 逐段拆解每個符號的意思
3. 3 個會「比對成功」與 3 個會「比對失敗」的測試字串
4. 在指定語言中的使用範例程式碼
繁體中文說明。
試吃報告
變化版
- 解釋現有版:貼上看不懂的 regex,請它白話翻譯。
- 效能優化版:請它檢查是否有災難性回溯(catastrophic backtracking)風險。
你可能也想看
個人預算規劃與記帳分析
貼上你的收入與支出,AI 幫你分類、抓出可省的地方、建議預算分配,理財不再憑感覺。
程式碼解釋與除錯
貼上看不懂或報錯的程式碼,AI 用白話逐段解釋、指出 bug 所在與修法,還教你怎麼避免再犯…
合約條款白話解讀
把看不懂的合約條款貼上,翻成白話、標出對你有風險的地方與該注意的問題,簽約前先看懂。
想要這份配方檔+每週新 AI Skills食譜?
留個信箱,我們把可複製的配方和新食譜直接寄給你。
免費 · 隨時取消