Domanda

Come puoi verificare se una stringa è un GUID valido in vbscript? Qualcuno ha scritto un metodo IsGuid?

È stato utile?

Soluzione

È simile alla stessa domanda in c # . Ecco la regex di cui avrai bisogno ...

^ [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} (}}) $

Ma questo è solo per cominciare. Dovrai anche verificare che le varie parti come la data / ora siano entro intervalli accettabili. Per avere un'idea di quanto sia complesso testare un GUID valido, guarda il codice sorgente di uno dei costruttori Guid.

Altri suggerimenti

Questa funzione funziona nell'ASP classico:

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

In VBScript puoi usare l'oggetto RegExp per abbinare la stringa usando espressioni regolari.

La funzione di Techek non ha funzionato per me nel classico ASP (vbScript). Restituiva sempre True per qualche strana ragione. Con alcune piccole modifiche ha funzionato. Vedi sotto

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

c'è un'altra soluzione:

try
{
  Guid g = new Guid(stringGuid);
  safeUseGuid(stringGuid); //this statement will execute only if guid is correct
}catch(Exception){}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top