VBScript - Expressões regulares

Expressões regulares é uma sequência de caracteres que forma um padrão, que é usado principalmente para pesquisar e substituir. O objetivo de criar um padrão é combinar strings específicas, de modo que o desenvolvedor possa extrair caracteres com base nas condições e substituir certos caracteres.

Objeto RegExp

O objeto RegExp ajuda os desenvolvedores a combinar o padrão de strings e as propriedades e métodos nos ajudam a trabalhar com expressões regulares facilmente. É semelhante a RegExp em JavaScript

Propriedades

  • Pattern - O método Pattern representa uma string que é usada para definir a expressão regular e deve ser definida antes de usar o objeto de expressão regular.

  • IgnoreCase- Uma propriedade booleana que representa se a expressão regular deve ser testada em relação a todas as correspondências possíveis em uma string, se verdadeira ou falsa. Se não for especificado explicitamente, o valor de IgnoreCase é definido como False.

  • Global- Uma propriedade booleana que representa se a expressão regular deve ser testada em relação a todas as correspondências possíveis em uma string. Se não for especificado explicitamente, o valor global será definido como False.

Métodos

  • Test(string de pesquisa) - O método Test recebe uma string como argumento e retorna True se a expressão regular puder ser correspondida com a string, caso contrário, False é retornado.

  • Replace(string de pesquisa, string de substituição) - O método Replace usa 2 parâmetros. Se a pesquisa for bem-sucedida, ela substitui essa correspondência pela string de substituição e a nova string é retornada. Se não houver correspondências, a string de pesquisa original é retornada.

  • Execute(string de pesquisa) - O método Execute funciona como Replace, exceto que retorna um objeto de coleção Matches, contendo um objeto Match para cada correspondência bem-sucedida. Não modifica a string original.

Objeto de coleção de correspondências

O objeto da coleção Matches é retornado como resultado do método Execute. Este objeto de coleção pode conter zero ou mais objetos Match e as propriedades deste objeto são somente leitura.

  • Count - O método Count representa o número de objetos de correspondência na coleção.

  • Item - O método Item permite que os objetos de correspondência sejam acessados ​​a partir do objeto de coleções de correspondências.

Objeto de correspondência

O objeto Match está contido no objeto da coleção Match. Esses objetos representam a correspondência bem-sucedida após a busca por uma string.

  • FirstIndex- Representa a posição dentro da string original onde ocorreu a correspondência. Este índice é baseado em zero, o que significa que a primeira posição em uma string é 0.

  • Length - Um valor que representa o comprimento total da string combinada.

  • Value- Um valor que representa o valor ou texto correspondente. Também é o valor padrão ao acessar o objeto Match.

Tudo sobre parâmetros de padrão

A construção do padrão é semelhante ao PERL. A construção de padrões é a coisa mais importante ao trabalhar com expressões regulares. Nesta seção, trataremos de como criar um padrão com base em vários fatores.

Correspondência de posição

A importância da correspondência de posição é garantir que colocamos as expressões regulares nos lugares corretos.

Símbolo Descrição
^ Corresponde apenas ao início de uma string.
$ Corresponde apenas ao final de uma string.
\ b Corresponde a qualquer limite de palavra
\ B Corresponde a qualquer limite não-palavra

Correspondência de literais

Qualquer forma de caracteres como alfabeto, número ou caractere especial ou mesmo decimal, hexadecimal pode ser tratada como um Literal. Como alguns dos caracteres já têm um significado especial no contexto da Expressão regular, precisamos escapar deles usando sequências de escape.

Símbolo Descrição
Alfanumérico Corresponde apenas a caracteres alfabéticos e numéricos.
\ n Corresponde a uma nova linha.
\ [ Corresponde [apenas literal
\] Matches] literal apenas
\ ( Corresponde (apenas literal
\) Corresponde) apenas literal
\ t Corresponde à guia horizontal
\ v Corresponde à guia vertical
\ | Partidas | apenas literal
\ { Corresponde a {literal apenas
\} Matches} literal apenas
\\ Corresponde a \ literal apenas
\? Partidas ? apenas literal
\ * Corresponde * apenas literal
\ + Corresponde + literal apenas
\. Partidas . apenas literal
\ b Corresponde a qualquer limite de palavra
\ B Corresponde a qualquer limite não-palavra
\ f Corresponde a um feed de formulário
\ r Corresponde ao retorno de carro
\ xxx Corresponde ao caractere ASCII de um número octal xxx.
\ xdd Corresponde ao caractere ASCII de um número hexadecimal dd.
\ uxxxx Corresponde ao caractere ASCII de um literal UNICODE xxxx.

Correspondência de classes de personagens

As classes de caracteres são o padrão formado por agrupamento personalizado e colocado entre colchetes []. Se estivermos esperando uma classe de caractere que não deveria estar na lista, devemos ignorar essa classe de caractere particular usando o símbolo negativo, que é um cap ^.

Símbolo Descrição
[xyz] Corresponde a qualquer classe de caractere incluída no conjunto de caracteres.
[^ xyz] Corresponde a qualquer classe de caractere que NÃO esteja incluída no conjunto de caracteres.
. Corresponde a qualquer classe de caractere, exceto \ n
\W Corresponde a qualquer classe de caractere de palavra. Equivalente a [a-zA-Z_0-9]
\W Corresponde a qualquer classe de caractere que não seja de palavra. Equivalente a [^ a-zA-Z_0-9]
\ d Corresponde a qualquer classe de dígito. Equivalente a [0-9].
\ D Corresponde a qualquer classe de caracteres sem dígitos. Equivalente a [^ 0-9].
\ s Corresponde a qualquer classe de caractere de espaço. Equivalente a [\ t \ r \ n \ v \ f]
\ S Corresponde a qualquer classe de caractere de espaço. Equivalente a [^ \ t \ r \ n \ v \ f]

Correspondência de Repetição

A correspondência de repetição permite várias pesquisas na expressão regular. Ele também especifica o número de vezes que um elemento é repetido em uma Expressão Regular.

Símbolo Descrição
* Corresponde a zero ou mais ocorrências da Expressão regular fornecida. Equivalente a {0,}.
+ Corresponde a uma ou mais ocorrências da expressão regular fornecida. Equivalente a {1,}.
? Corresponde a zero ou uma ocorrência da expressão regular fornecida. Equivalente a {0,1}.
{x} Corresponde exatamente ao número x de ocorrências da expressão regular fornecida.
{x,} Corresponde pelo menos x ou mais ocorrências da expressão regular fornecida.
{x, y} Corresponde ao número de ocorrências xey da expressão regular fornecida.

Alternação e agrupamento

A alternância e o agrupamento ajudam os desenvolvedores a criar expressões regulares mais complexas, tratando particularmente de cláusulas intrincadas dentro de uma expressão regular, o que oferece grande flexibilidade e controle.

Símbolo Descrição
0 Agrupando uma cláusula para criar uma cláusula. "(xy)? (z)" corresponde a "xyz" ou "z".
| A alternância combina uma cláusula de expressão regular e, em seguida, corresponde a qualquer uma das cláusulas individuais. "(ij) | (23) | (pq)" corresponde a "ij" ou "23" ou "pq".

Criação de expressões regulares

Abaixo estão alguns exemplos que explicam claramente como construir uma Expressão Regular.

Expressão regular Descrição
"^ \ s * .." e ".. \ s * $" Representa que pode haver qualquer número de caracteres de espaço à esquerda e à direita em uma única linha.
"((\ $ \ s?) | (# \ s?))?" Representa um sinal opcional $ ou # seguido por um espaço opcional.
"((\ d + (\. (\ d \ d)?)?))" Representa que pelo menos um dígito está presente seguido por decimais opcionais e dois dígitos após decimais.

Exemplo

O exemplo a seguir verifica se o usuário inseriu ou não um id de e-mail cujo formato deve corresponder, de forma que haja um id de e-mail seguido por '@' e depois pelo nome de domínio.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         strid = "[email protected]"
         Set re = New RegExp
         With re
            .Pattern    = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
            .IgnoreCase = False
            .Global     = False
         End With
        
         ' Test method returns TRUE if a match is found
         If re.Test( strid ) Then
            Document.write(strid & " is a valid e-mail address")
         Else
            Document.write(strid & " is NOT a valid e-mail address")
         End If
        
        Set re = Nothing
      </script>
   </body>
</html>