Regex檢查GUID格式
相信有用過SQL SERVER資料庫的開發者都知道SQL SERVER 有個欄位型態稱之為GUID
應用程式中還滿常拿它來當成每一筆記錄的Key值
那麼較嚴謹理應要對來源資料進行判斷
舉例來說,當從URL上取得一個字串進行Query,如果直接以下列寫法
command.Parameters.Add("@id", System.Data.SqlDbType.UniqueIdentifier).Value = new Guid(Request.QueryString["id"].ToString())
在沒有進行任何格式判斷,則當使用者隨意改了URL上的字串格式或是來源資料因其它因素而造成格式不符
那麼進行GUID的格式轉換則會引發Exception
當然或許最簡單的方式是加個try..catch來進行Exception的處理,例如
try { ....... } catch (Exception ex) { //例外處理}
但try…catch理應不該用來處理這類的格式判斷,try…catch應該是用來避免一些無法預期的例外之用的
簡單的來說不應該濫用try…catch
很可惜的在.NET Framework 4以前,GUID並未提供類似TryParse的方法,可供開發使用
然而GUID有其特定的格式,因此可利用Regular便可很快處理掉這個問題
Regex reg = new Regex("^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$"); Match m = reg.Match(Request.QueryString["id"].ToString()); if (m.Success) //格式正確else //不符GUID格式
好消息是在.NET Framework 4,GUID已提供了TryParse的方法,可供驗證使用囉
相關資源:
若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。
By No.18