Verifique se há um GUID válido
Pergunta
Como você pode verificar se uma string é um GUID válido no VBScript? Alguém escreveu um método IsGuid?
Solução
Isso é semelhante ao mesma pergunta em c#. Aqui está o regex que você precisará ...
^[A-fa-f0-9] {32} $ |^({| ()? {3} [a-fa-f0-9] {12} (} |))? $ |^({)? [0xa-fa-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} (}}) $
Mas isso é apenas para iniciantes. Você também precisará verificar se as várias partes, como a data/hora, estão dentro de intervalos aceitáveis. Para ter uma idéia de quão complexo é testar um GUID válido, consulte o código -fonte para um dos construtores do GUID.
Outras dicas
Esta função está funcionando no ASP clássico:
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
Ver Verifique um GUID.
No VBScript, você pode usar o objeto regexp para corresponder à sequência usando expressões regulares.
A função da Techek não funcionou para mim no Classic ASP (VBScript). Sempre retornou verdadeiro por algum motivo estranho. Com algumas pequenas mudanças, funcionou. Veja abaixo
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
Há outra solução:
try
{
Guid g = new Guid(stringGuid);
safeUseGuid(stringGuid); //this statement will execute only if guid is correct
}catch(Exception){}