Pregunta

¿Cómo puede verificar si una cadena es un GUID válido en vbscript? ¿Alguien ha escrito un método IsGuid?

¿Fue útil?

Solución

Esto es similar a la misma pregunta en c # . Aquí está la expresión regular que necesitará ...

^ [A-Fa-f0-9] {32} $ | ^ ({| ()? [A-Fa-f0-9] {8} - ([A-Fa-f0-9] {4 } -) {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} (}}) $

Pero eso es solo para empezar. También deberá verificar que las diversas partes, como la fecha / hora, se encuentren dentro de los rangos aceptables. Para tener una idea de cuán complejo es probar un GUID válido, mire el código fuente de uno de los constructores de Guid.

Otros consejos

Esta función está funcionando en ASP clásico:

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}(}|\))?<*>quot;
      isGUID = regEx.Test(strGUID)
      set RegEx = nothing
End Function

En VBScript puedes usar el objeto RegExp para que coincida con la cadena usando expresiones regulares.

La función de Techek no funcionó para mí en ASP clásico (vbScript). Siempre devuelve True por alguna extraña razón. Con algunos cambios menores funcionó. Ver abajo

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

hay otra solución:

try
{
  Guid g = new Guid(stringGuid);
  safeUseGuid(stringGuid); //this statement will execute only if guid is correct
}catch(Exception){}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top