Regex檢查GUID格式

  • 2938
  • 0

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的方法,可供驗證使用囉

 

 

相關資源:

.NET Framework 4 GUID

.NET Framework 3.5

Regex 類別

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18