VBScript - Expresiones regulares

Las expresiones regulares son una secuencia de caracteres que forma un patrón, que se utiliza principalmente para buscar y reemplazar. El propósito de crear un patrón es hacer coincidir cadenas específicas, de modo que el desarrollador pueda extraer caracteres según las condiciones y reemplazar ciertos caracteres.

Objeto RegExp

El objeto RegExp ayuda a los desarrolladores a hacer coincidir el patrón de cadenas y las propiedades y métodos nos ayudan a trabajar con expresiones regulares fácilmente. Es similar a RegExp en JavaScript

Propiedades

  • Pattern - El método Pattern representa una cadena que se usa para definir la expresión regular y debe establecerse antes de usar el objeto de expresión regular.

  • IgnoreCase- Una propiedad booleana que representa si la expresión regular debe probarse con todas las coincidencias posibles en una cadena si es verdadera o falsa. Si no se especifica explícitamente, el valor de IgnoreCase se establece en False.

  • Global- Una propiedad booleana que representa si la expresión regular debe probarse con todas las coincidencias posibles en una cadena. Si no se especifica explícitamente, el valor global se establece en falso.

Métodos

  • Test(cadena de búsqueda): el método de prueba toma una cadena como argumento y devuelve True si la expresión regular se puede comparar con éxito con la cadena; de lo contrario, se devuelve False.

  • Replace(cadena de búsqueda, cadena de reemplazo): el método Reemplazar toma 2 parámetros. Si la búsqueda tiene éxito, reemplaza esa coincidencia con la cadena de reemplazo y se devuelve la nueva cadena. Si no hay coincidencias, se devuelve la cadena de búsqueda original.

  • Execute(cadena de búsqueda): el método Execute funciona como Reemplazar, excepto que devuelve un objeto de colección Coincidencias, que contiene un objeto Coincidencia para cada coincidencia exitosa. No modifica la cadena original.

Coincide con el objeto de colección

El objeto de colección Matches se devuelve como resultado del método Execute. Este objeto de colección puede contener cero o más objetos Match y las propiedades de este objeto son de solo lectura.

  • Count - El método Count representa el número de objetos coincidentes de la colección.

  • Item - El método Item permite acceder a los objetos de coincidencia desde el objeto de colecciones de coincidencias.

Coincidir con objeto

El objeto Match está contenido dentro del objeto de colección Match. Estos objetos representan la coincidencia exitosa después de la búsqueda de una cadena.

  • FirstIndex- Representa la posición dentro de la cadena original donde ocurrió la coincidencia. Este índice está basado en cero, lo que significa que la primera posición en una cadena es 0.

  • Length : Un valor que representa la longitud total de la cadena coincidente.

  • Value: Un valor que representa el valor o texto coincidente. También es el valor predeterminado al acceder al objeto Match.

Todo sobre el parámetro de patrón

La construcción de patrones es similar a PERL. La construcción de patrones es lo más importante al trabajar con expresiones regulares. En esta sección, trataremos cómo crear un patrón basado en varios factores.

Coincidencia de posición

La importancia de la coincidencia de posiciones es asegurar que colocamos las expresiones regulares en los lugares correctos.

Símbolo Descripción
^ Coincide solo con el comienzo de una cadena.
PS Coincide solo con el final de una cadena.
\segundo Coincide con cualquier límite de palabra
\SEGUNDO Coincide con cualquier límite que no sea una palabra

Coincidencia de literales

Cualquier forma de caracteres, como alfabeto, número o carácter especial o incluso decimal, hexadecimal puede tratarse como un literal. Dado que algunos de los caracteres ya tienen un significado especial dentro del contexto de la expresión regular, debemos escapar de ellos usando secuencias de escape.

Símbolo Descripción
Alfanumérico Coincide solo con caracteres alfabéticos y numéricos.
\norte Coincide con una nueva línea.
\ [ Coincidencias [solo literal
\] Coincidencias] solo literal
\ ( Coincidencias (solo literal
\) Coincidencias) solo literal
\ t Coincide con la pestaña horizontal
\ v Coincide con la pestaña vertical
\ | Partidos | solo literal
\ { Coincide con {solo literal
\} Coincide con} solo literal
\\ Coincide con \ literal solamente
\? Partidos ? solo literal
\ * Coincidencias * solo literal
\ + Coincidencias + solo literal
\. Partidos . solo literal
\segundo Coincide con cualquier límite de palabra
\SEGUNDO Coincide con cualquier límite que no sea una palabra
\F Coincide con un avance de formulario
\ r Coincide con el retorno de carro
\ xxx Coincide con el carácter ASCII de un número octal xxx.
\ xdd Coincide con el carácter ASCII de un número hexadecimal dd.
\ uxxxx Coincide con el carácter ASCII de un xxxx literal UNICODE.

Coincidencia de clases de personajes

Las clases de caracteres son el Patrón formado por agrupación personalizada y encerrado entre llaves []. Si estamos esperando una clase de carácter que no debería estar en la lista, entonces deberíamos ignorar esa clase de carácter en particular usando el símbolo negativo, que es un cap ^.

Símbolo Descripción
[xyz] Coincide con cualquiera de las clases de caracteres incluidos en el juego de caracteres.
[^ xyz] Coincide con cualquiera de las clases de caracteres que NO están incluidas en el juego de caracteres.
. Coincide con cualquier clase de personaje excepto \ n
\ w Coincide con cualquier clase de carácter de palabra. Equivalente a [a-zA-Z_0-9]
\ W Coincide con cualquier clase de caracteres que no sean palabras. Equivalente a [^ a-zA-Z_0-9]
\re Coincide con cualquier clase de dígitos. Equivalente a [0-9].
\RE Coincide con cualquier clase de caracteres que no sean dígitos. Equivalente a [^ 0-9].
\ s Coincide con cualquier clase de carácter espacial. Equivalente a [\ t \ r \ n \ v \ f]
\ S Coincide con cualquier clase de carácter espacial. Equivalente a [^ \ t \ r \ n \ v \ f]

Coincidencia de repetición

La coincidencia de repetición permite múltiples búsquedas dentro de la expresión regular. También especifica el número de veces que se repite un elemento en una expresión regular.

Símbolo Descripción
* Coincide con cero o más apariciones de la expresión regular dada. Equivalente a {0,}.
+ Coincide con una o más apariciones de la expresión regular dada. Equivalente a {1,}.
? Coincide con cero o una apariciones de la expresión regular dada. Equivalente a {0,1}.
{X} Coincide exactamente con x número de ocurrencias de la expresión regular dada.
{X,} Coincide con al menos x o más apariciones de la expresión regular dada.
{x, y} Coincide con el número de ocurrencias xay de la expresión regular dada.

Alternancia y agrupación

La alternancia y la agrupación ayudan a los desarrolladores a crear expresiones regulares más complejas en el manejo particular de cláusulas complejas dentro de una expresión regular, lo que brinda una gran flexibilidad y control.

Símbolo Descripción
0 Agrupar una cláusula para crear una cláusula. "(xy)? (z)" coincide con "xyz" o "z".
| La alternancia combina una cláusula de expresión regular y luego coincide con cualquiera de las cláusulas individuales. "(ij) | (23) | (pq)" coincide con "ij", "23" o "pq".

Construyendo expresiones regulares

A continuación, se muestran algunos ejemplos que explican claramente cómo crear una expresión regular.

Expresión regular Descripción
"^ \ s * .." y ".. \ s * $" Representa que puede haber cualquier número de espacios al principio y al final en una sola línea.
"((\ $ \ s?) | (# \ s?))?" Representa un signo $ o # opcional seguido de un espacio opcional.
"((\ d + (\. (\ d \ d)?)?))" Representa que hay al menos un dígito seguido de decimales opcionales y dos dígitos después de los decimales.

Ejemplo

El siguiente ejemplo verifica si el usuario ingresó o no una identificación de correo electrónico cuyo formato debe coincidir de manera que haya una identificación de correo electrónico seguida de '@' y luego seguida del nombre de dominio.

<!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>