固定電話驗證的三段式難題:一篇掘金文章拆解區號、號碼與分機號的完整規則
掘金一篇固定電話驗證教學文章流傳,本臺整理其中區號、號碼、分機號的規則輪廓與常見驗證錯誤。
一篇發表於掘金的技術文章《固定電話驗證詳解:區號、號碼、分機號的完整驗證》,於2026年9月8日由帳號 vipxieliang 發布,至整理時累積約6,754次閱讀。文章以中國大陸固定電話號碼的表單校驗為主題,逐一拆解區號、本地號碼與分機號的電信規則,並指出多數流傳的正規表示式寫法存在的漏洞。本臺綜合該文內容與公開資料,整理其中可核實的技術輪廓。
為什麼固話比手機難驗證
行動電話普及後,許多表單仍保留「座機」欄位:企業通訊錄、客服回訪、政務辦事、銀行開戶、公司招募等場景都會出現。文章指出,手機號規則相對單一,中國大陸手機號為11位、以1開頭;固定電話則同時面對三個變數:區號帶不帶0、是3位還是4位;本地號碼是7位還是8位,隨城市規模而異;分機號有無、位數多寡、使用何種分隔符號。
任何一項考慮不周,結果要嘛誤殺合法號碼,要嘛放行無效輸入。文章介紹的開源驗證庫 ValidX 將這條規則封裝為 @ChineseLandline 註解,並與 @ChinesePhone、@ChinesePhoneOrLandline、@PhoneNumber 等選項構成選型組合。
三段式結構與核心正則
文章以一個具體號碼示範結構:010-12345678-1234,可拆為區號「010」、本地號碼「12345678」與分機「1234」。區號以0開頭(長途冠碼)加上城市代碼,共3至4位;本地號碼由局號加用戶號組成,共7至8位;分機號為企業內部話務臺轉接用,1至6位,屬可選欄位。
對應的核心正則為:
^(0\d{2,3}[-\s]?)?\d{7,8}([-\s]\d{1,6})?$
逐段拆解:區號整體可選,支援不填區號的本地號碼寫法;本地號碼7至8位並存,容納大城市的8位與中小城市的7位;分機同樣整體可選。正則容忍兩類分隔符,連字號與空格,且區號與號碼之間允許完全沒有分隔符,「01012345678」這種緊湊寫法也能通過。
區號的常見誤解
文章特別澄清一個流傳甚廣的理解偏差:許多人把「010」「0755」整體視為區號,但在電信標準裡,開頭的0是長途冠碼,真正的城市代碼是其後的1至3位。文中列出對照:北京010拆解為0加10,3位;上海021拆解為0加21,3位;廣州020為0加20,3位;深圳0755為0加755,4位;成都028為0加28,3位;長沙0731為0加731,4位。
對應正則 0\d{2,3} 要求第一位必須是0,後跟2至3位城市代碼。這也解釋了為什麼400開頭與800開頭的客服號碼會被拒絕:它們不以0開頭,本就不屬於區號體系。
本地號碼與分機號的規則
本地號碼採用「局號加用戶號」結構。直轄市、省會等大容量城市已升至8位,中小城市多為7位。正則以 \d{7,8} 同時容納兩者;文章指出,許多手寫正則寫死 \d{8},結果誤殺小城市的7位號碼。
分機號是PBX(用戶交換機)內部的分支編號,形如「-1234」或以空格分隔的「100」。ValidX 的分機規則為 \d{1,6},最長6位,前綴為連字號或空格。
「偽正則」的三種典型錯誤
文章列出網路上流傳寫法的主要問題。第一種 \d{3,4}-\d{7,8},區號不強制以0開頭,導致400-123-4567、80012345678這類客服號碼全被放行。第二種 0\d{3}-\d{8},鎖死「4位區號加8位號碼」結構,北京010搭配7位號碼會被誤殺,小城市7位號碼全數無法通過。第三種 0\d{2,3}-\d{7,8},不接受分機號,也不接受空格或緊湊寫法。
換言之,這三類寫法分別在「前綴約束」「結構彈性」與「分隔符容忍度」上失守,也正是該文主張使用封裝好的驗證器而非手寫正則的核心理由。
選型場景與國際化支援
文章另外比較了幾個使用情境:只需驗證固話時用 @ChineseLandline;只需手機用 @ChinesePhone;欄位允許兩者擇一填寫時用 @ChinesePhoneOrLandline;面向國際號碼且需支援分機號時,則使用 @PhoneNumber。文中並介紹鏈式API寫法,讓開發者在不建立DTO的情況下也能完成驗證。
這類表單驗證細節的討論,與我們先前整理的V2EX開發者分享開源終端機多agent編排系統屬於同類的開發者實務分享樣態,均以具體專案為載體,在技術社羣內傳播。
訊源與可核實邊界
需說明的是,本文的技術規則、正則片段與城市區號對照,均取自該篇掘金文章的自述內容。區號分配與位數結構可與公開電信資料核對;ValidX 的實際驗證行為,則以其開源程式碼為準。文章閱讀數來自掘金頁面顯示,為整理當時的數值。
固定電話驗證並非新出現的問題,該文的價值在於把零散的電信規則整理成一條可解釋的正則,並以常見錯誤寫法作為對照組。對仍在維護含座機欄位表單的開發者而言,這份整理提供了一條從規則到實作的完整路徑,專案原始碼亦隨文公開,可供直接檢視與驗證。
主題