Expresiones regulares en reglas de flujo de correo en Exchange Online

Puede usar expresiones regulares (RegEx) en condiciones y excepciones en reglas de flujo de correo (también conocidas como reglas de transporte) para que coincidan con patrones de texto en diferentes partes de un mensaje (por ejemplo, encabezados de mensaje, remitente, destinatarios, asunto y el cuerpo del mensaje). Las condiciones y excepciones determinan si la acción de la regla debe aplicarse a un mensaje de correo electrónico.

Nota:

Debido a las variaciones en los entornos de cliente, Microsoft Customer Support Services (CSS) no puede participar en el desarrollo o las pruebas de scripts de expresión regular personalizados ("scripts RegEx"). Para el desarrollo, las pruebas y la depuración de scripts personalizados de RegEX, los clientes de Microsoft 365 tendrán que confiar en los recursos de TI internos. Como alternativa, los clientes de Microsoft 365 pueden optar por usar un recurso de consultoría externo, como Microsoft Consulting Services (MCS). Independientemente del recurso de desarrollo de scripts, los ingenieros de soporte técnico de CSS no están disponibles para ayudar a los clientes con consultas de script RegEx personalizadas.

¿Busca tareas de administración relacionadas con las reglas de flujo de correo? Consulte Reglas de flujo de correo (reglas de transporte) en Exchange Online.

Expresiones simples frente a expresiones regulares

Una expresión simple representa un valor específico que desea que coincida exactamente en un mensaje. Las condiciones y excepciones que usan expresiones simples coinciden con palabras o cadenas de texto específicas. Por ejemplo, una condición de regla de flujo de correo que busca documentos denominados Ventas anuales Forecast.docx.

Una expresión regular es una notación concisa y flexible que identifica patrones de texto en un mensaje. La notación está compuesta por dos tipos de caracteres básicos:

  • Caracteres literales: texto que debe existir en la cadena de destino. Estos caracteres son caracteres normales, tal como se escriben.
  • Metacaracters: uno o varios caracteres especiales que indican cómo puede variar el texto en la cadena de destino.

Puede usar expresiones regulares para analizar rápidamente los mensajes de correo electrónico para buscar patrones de texto específicos. Las expresiones regulares permiten detectar mensajes con tipos específicos de contenido, como números de seguridad social (SSN), números de patente y números de teléfono.

No se puede hacer coincidir razonablemente los datos de variables con una expresión simple porque una expresión simple requiere que se detecten todas las variaciones posibles del valor. La coincidencia de un gran número de expresiones simples en el contenido del mensaje puede ser un uso intensivo de recursos. El uso de expresiones regulares es más eficaz. En lugar de especificar todas las variaciones posibles, puede configurar la condición de regla de flujo de correo para buscar un patrón de texto.

Expresiones regulares en Exchange Online

En Exchange Online PowerShell, los nombres de parámetro que terminan con MatchesPatterns usan expresiones regulares. En el Centro de administración de Exchange (EAC), condiciones y nombres de excepción que terminan con ... coincide con cualquiera de estos patrones de texto que usan expresiones regulares. Para obtener más información sobre las condiciones y excepciones de las reglas de flujo de correo en Exchange Online, vea Condiciones y excepciones de reglas de flujo de correo (predicados) en Exchange Online.

Advertencia

Pruebe cuidadosamente las expresiones regulares. Una expresión regular mal configurada podría producir coincidencias inesperadas y provocar un comportamiento de regla de flujo de correo no deseado, como:

  • Acciones no deseadas en los mensajes y el contenido del mensaje.
  • Posible pérdida de datos.

Las expresiones regulares complejas también pueden afectar al rendimiento del flujo de correo. De aquí que sea recomendable comprobar las expresiones regulares en un entorno de prueba antes de ponerlas en producción.

En la tabla siguiente se enumeran las cadenas de patrón que puede usar para crear una expresión regular coincidente con patrones en Exchange Online:

Cadena de patrón Description
\S La cadena de patrón \S identifica cualquier carácter que no sea espacio.
\s La cadena de patrón \s identifica cualquier carácter de espacio en blanco.
\D La cadena de patrón \D identifica cualquier dígito que no es numérico.
\d La cadena de patrón \d identifica cualquier dígito numérico.
\w La cadena de patrón \w coincide con cualquier carácter Unicode único clasificado como una letra o un dígito decimal.
\W La cadena de patrón \W identifica cualquier carácter Unicode no categorizado como una letra o dígito decimal.
* El carácter asterisco ( * ) coincide con cero o más instancias del carácter anterior. Por ejemplo, ab*c coincide con las cadenas siguientes: ac, abcy abbbbc.
| El carácter Pipe ( | ) actúa como operador OR. Por ejemplo, "contoso|fabrikam" coincide con cualquier instancia de contoso o fabrikam.
( ) Los paréntesis hacen la función de delimitadores de agrupamiento. Por ejemplo, \a(bc)*\ coincide con las siguientes cadenas: a, abc, abcbc, abcbcbc, etc.
\ Una barra diagonal inversa se usa como carácter de escape antes que un carácter especial. Los caracteres especiales son caracteres usados en las cadenas de patrones:
  • Barra invertida \
  • Canalización |
  • Asterisco *
  • Abrir paréntesis (
  • Paréntesis de cierre )
  • Intercalación ^
  • Signo de dólar $

Por ejemplo, si desea hacer coincidir una cadena que contiene (525), use \(525\).

^ El carácter de intercalación ( ^ ) indica que la cadena de patrón que sigue al símbolo de intercalación debe existir al principio de la cadena de texto que se va a coincidir. Por ejemplo, ^fred@contoso coincide fred@contoso.com con y fred@contoso.co.uk , pero no alfred@contoso.comcon .
$ El carácter dollar-sign ( $ ) indica que la cadena de patrón anterior debe existir al final de la cadena de texto que se va a coincidir. Por ejemplo, contoso.com$ coincide adam@contoso.com con y kim@research.contoso.com pero no coincide con kim@contoso.com.au.

Construcción de expresiones regulares

Con la tabla anterior, puede construir una expresión regular que coincida con el patrón de los datos que desea que coincidan:

  • De izquierda a derecha, examine cada carácter o grupo de caracteres presentes en los datos que desea identificar.
  • Lea la descripción de cada cadena de patrón para determinar cómo se aplica a los datos que desea identificar.
  • Determine qué cadena de patrón de la tabla representa ese carácter o grupo de caracteres y agregue esa cadena de patrón a la expresión regular.

Nota:

Las expresiones regulares usadas en reglas de transporte NO distinguen mayúsculas de minúsculas.

El ejemplo siguiente coincide con los números de teléfono de Norteamérica en los formatos 425 555-0100 y 425.555.0100:

425(\s|.)\d\d\d(-|.)\d\d\d\d

Podría agregar el formato (425) 555-0100, que usa paréntesis para identificar el prefijo.

El ejemplo siguiente coincide con los tres formatos de número de teléfono.

\d\d\d((\s|.|-|\)|\)\s)\d\d\d(\s|.|-)\d\d\d\d

Puede analizar el ejemplo anterior del siguiente modo:

  • \d\d\d: requiere que aparezcan exactamente tres dígitos numéricos en primer lugar.
  • ((\s|.|-|\)|\)\s): requiere que exista un espacio, un punto o un guion después del número de tres dígitos. Cada cadena de identificación de caracteres está contenida en los delimitadores de agrupamiento y está separada por el carácter de barra vertical. Esta separación significa que solo puede existir uno de los caracteres especificados dentro de los delimitadores de agrupación en esta ubicación en la cadena que se va a coincidir. Para la separación entre el código de área y los tres dígitos siguientes, también busca un paréntesis cerrado, o paréntesis cerrados y espacio.
  • \d\d\d: requiere que aparezcan exactamente tres dígitos numéricos a continuación.
  • (\s|.|-): requiere que exista un espacio, un punto o un guion después del número de tres dígitos.
  • \d\d\d\d: requiere que aparezcan exactamente cuatro dígitos numéricos a continuación.

El ejemplo anterior coincide con los siguientes valores:

  • (425)555.0100
  • 425 555 0100
  • 425 555 0100
  • (425) 555-0100
  • 425-555-0100
  • (425) 555-0100

Creación de un flujo de correo que usa una expresión regular

En el ejemplo siguiente se crea una regla de flujo de correo en Exchange Online PowerShell que usa expresiones regulares para coincidir con los SSN en el asunto de un mensaje de correo electrónico:

New-TransportRule -Name "Social Security Number Block Rule" -SubjectOrBodyMatchesPatterns '\d\d\d-\d\d-\d\d\d\d' -RejectMessageEnhancedStatusCode "5.7.1" -RejectMessageReasonText "This message has been rejected because of content restrictions"

Para obtener información detallada acerca de la sintaxis y los parámetros, vea New-TransportRule.

En el ejemplo siguiente se muestra la nueva regla de flujo de correo:

Get-TransportRule "Social Security Number Block Rule" | Format-List

Para obtener información detallada sobre la sintaxis y los parámetros, consulte Get-TransportRule.