Проверьте действительный гид - PullRequest
2 голосов
/ 25 сентября 2008

Как проверить, является ли строка действительным GUID в vbscript? Кто-нибудь написал метод IsGuid?

Ответы [ 6 ]

2 голосов
/ 07 сентября 2012

Эта функция работает в классическом 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
2 голосов
/ 25 сентября 2008

Это похоже на тот же вопрос в c # . Вот регулярное выражение, которое вам понадобится ...

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

Но это только для начала. Вам также необходимо убедиться, что различные части, такие как дата / время, находятся в допустимых пределах. Чтобы понять, насколько сложно проверить действительный идентификатор GUID, посмотрите исходный код одного из конструкторов Guid.

1 голос
/ 19 мая 2011

Функция 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 голос
/ 25 сентября 2008

В VBScript вы можете использовать объект RegExp для сопоставления строки с помощью регулярных выражений.

1 голос
/ 25 сентября 2008
0 голосов
/ 25 июня 2009

есть другое решение:

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