2008-09-25 63 views

回答

2

這與same question in c#相似。這是您需要的正則表達式...

^[A-Fa-f0-9] {32} $ | ^({|()?[A-Fa-f0-9] {8} - ( [A-發f0-9] {4} - ){3} [A-發f0-9] {12}(} |?))$ | ^({)是0xA-發f0-9 ] {3,10}(,{0,1} [0xA-Fa-f0-9] {3,6}){2},{0,1}({)([0xA-Fa-f0-9] {3,4},{0,1}){7} [0xA-Fa-f0-9] {3,4}(}})$

但這僅僅是爲了初學者。您還必須驗證諸如日期/時間等各個部分是否在可接受的範圍內。要想知道測試一個有效的GUID有多複雜,請查看其中一個Guid構造函數的源代碼。

+0

文字括號需要轉義。例如,第二個子表達式應該是`| {({| \()[A-Fa-f0-9] {8} - ([A-Fa-f0-9] {4} - ){3} [ A-Fa-f0-9] {12}(} | \))?$`而不是`| ^({|()?[A-Fa-f0-9] {8} - ([A-Fa- f0-9] {4} - ){3} [A-發f0-9] {12}(} |))$`?。 – Heinzi 2012-02-21 09:24:38

1

請參閱Check a GUID

+1

我想,一個,但我有一個VBScript錯誤。我猜這是vb代碼不是vbscript。 – chumbawumba 2008-09-25 14:07:42

+0

VBScript不支持`Like` – AutomatedChaos 2012-09-07 15:49:13

1

在VBScript中,您可以使用RegExp對象使用正則表達式匹配字符串。

-3

還有另一種解決方案:

try 
{ 
    Guid g = new Guid(stringGuid); 
    safeUseGuid(stringGuid); //this statement will execute only if guid is correct 
}catch(Exception){} 
1

Techek的功能並沒有在傳統的ASP(VBScript)作爲我的工作。由於某種奇怪的原因,它總是返回True。通過一些小的改變它確實有效。見下面

Function isGUID(byval strGUID) 
    if isnull(strGUID) then 
    isGUID = false 
    exit function 
    end if 
    dim regEx 
    set regEx = New RegExp 
    regEx.Pattern = "{[0-9A-Fa-f-]+}" 
    isGUID = regEx.Test(strGUID) 
    set RegEx = nothing 
End Function 
1

此功能工作在傳統的ASP:

Function isGUID(byval strGUID) 
     if isnull(strGUID) then 
     isGUID = false 
     exit function 
     end if 
     dim regEx 
     set regEx = New RegExp 
     regEx.Pattern = "^({|\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\))?$" 
     isGUID = regEx.Test(strGUID) 
     set RegEx = nothing 
End Function