某天,運營跑過來說網站的郵件發送驗證碼用不了了,作為開發人員,我們解決問題就是我們的本分工作。
首先排查錯誤日志,立馬就發現 PHP 報了個錯誤:
ErrorException: preg_match(): Compilation failed: invalid range in character class at offset 4
錯誤內容是說正則驗證格式錯誤了,需要進行修改,但是我們在之前的開發及使用過程中並沒有出現問題,而是最近發現的。
這就讓我們摸不着頭腦了,直到我們發現服務器的 PHP 版本不知道什么時候從 7.2 換成了 7.3!
怒
有了差異之后,我們找到了問題原因:
- PHP 從 7.2 升級到 PHP 7.3
- 正則驗證格式編寫不規范
解決方法也很簡單:
- 升級 PHP 版本(可以不做,但建議保持與服務器統一)
- 注意正則格式特殊字符有沒有做轉義,比如
[]
中的-
需要做轉義:\-