Pergunta

Como você pode verificar se uma string é um GUID válido no VBScript? Alguém escreveu um método IsGuid?

Foi útil?

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

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){}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top