Exchange Online 中郵件流程規則中的正則表達式

您可以在郵件流程規則中的條件和例外狀況 (RegEx) 使用正則表達式 (也稱為傳輸規則) ,以比對郵件 (的不同部分的文字模式,例如,郵件標頭、寄件者、收件者、主旨和郵件本文) 。 條件和例外狀況會決定規則中的動作是否應該套用至電子郵件訊息。

注意事項

由於客戶環境中的差異,Microsoft 客戶支援服務 (CSS) 無法參與開發或測試自定義正則表達式腳本 (“RegEx 腳本”) 。 針對 RegEX 自定義腳本開發、測試和偵錯,Microsoft 365 客戶必須依賴內部 IT 資源。 或者,Microsoft 365 客戶可以選擇使用外部諮詢資源,例如 Microsoft 諮詢服務 (MCS) 。 不論腳本開發資源為何,CSS 支援工程師都無法協助客戶進行自定義 RegEx 腳本查詢。

要尋找與郵件流程規則相關的管理工作嗎? 請參閱 Exchange Online 中的郵件流程規則 (傳輸規則)

簡單表達式與正則表達式

簡單表達式是您想要在訊息中完全相符的特定值。 使用簡單表達式的條件和例外狀況會比對特定的單字或文字字串。 例如,尋找名為 Yearly Sales 的檔案的郵件流程規則條件 Forecast.docx。

正則表達式是簡潔且彈性的表示法,可用來尋找訊息中的文字模式。 表示法包含基本字元類型:

  • 常值字元:必須存在於目標字串中的文字。 這些字元是一般字元,如類型所示。
  • 中繼字元:一或多個特殊字元,指出文字在目標字串中的差異。

您可以使用正規表示式來快速剖析電子郵件訊息,以尋找特定的文字模式。 正則表達式可讓您偵測具有特定內容類型的訊息,例如社會安全號碼 (SSN) 、專利號碼和電話號碼。

您無法合理地比對變數數據與簡單表達式,因為簡單表達式需要偵測值的每個可能變化。 比對訊息內容中大量的簡單表達式可能會耗用大量資源。 使用正則表達式更有效率。 您可以設定郵件流程規則條件來搜尋文字模式,而不是指定所有可能的變化。

Exchange Online 中的正則表達式

Exchange Online PowerShell 中,以正則表示式結尾的MatchesPatterns參數名稱。 在 Exchange 系統管理中心 (EAC) ,以 ... 結尾的條件和例外 狀況名稱會比對任何這些文字模式 使用正則表達式。 如需 Exchange Online 中郵件流程規則條件和例外狀況的詳細資訊,請參閱 Exchange Online 中的郵件流程規則條件和 (述詞) 例外狀況

警告

仔細測試正則表達式。 設定錯誤的正規表示式可能會產生非預期的相符專案,並導致不必要的郵件流程規則行為,包括:

  • 訊息和訊息內容上不想要的動作。
  • 潛在數據遺失。

複雜的正則表示式也可能影響郵件流程效能。 在測試環境中實作正則表達式之前,請先在測試環境中進行測試。

下表列出可用來在 Exchange Online 中建立模式比對正則表示式的模式字串:

模式字串 說明
\S \S 模式字串會比對不是空格的所有單一字元。
\s \s 模式字串會比對所有單一空白字元。
\D \D 模式字串會比對所有非數字的字元。
\D \d 模式字串會比對所有單一數字。
\w \w 模式字串會比對任何分類為字母或十進位數的單一 Unicode 字元。
\W \W 模式字串會比對所有未依字母或十進位數字分類的單一 Unicode 字元。
* 星號 ( ) * 字元會比對前一個字元的零個或多個實例。 例如, ab*c 會比對下列字串: acabcabbbbc
| 管道 ( |) 字元做為 OR 運算子。 例如,『contoso|fabrikam』 符合 或 fabrikam的任何實例contoso
( ) 括弧會作為群組分隔符。 例如, \a(bc)*\ 會比對下列字串: aabcabcbcabcbcbc等等。
\ 反斜杠會當做特殊字元之前的逸出字元使用。 特殊字元是模式字串中使用的字元:
  • 反斜杠 \
  • 管道 |
  • 星號 *
  • 左括弧 (
  • 右括弧 )
  • 插入號 ^
  • 貨幣符號 $

例如,如果您想要比對包含 (525)的字串,請使用 \(525\)

^ 插入號 ( ^ ) 字元表示插入號後面的模式字串必須存在於要比對的文字字串開頭。 例如, ^fred@contoso 會比對 fred@contoso.comfred@contoso.co.uk ,但不符合 alfred@contoso.com
$ 貨幣符號 ( $ ) 字元表示前述模式字串必須存在於要比對的文字字串結尾。 例如, contoso.com$ 會比對 adam@contoso.comkim@research.contoso.com ,但 不符合 kim@contoso.com.au

建構正則表達式

藉由使用上述數據表,您可以建構符合您想要比對之數據模式的正規表達式:

  • 從左至右工作,檢查您想要比對之數據中的每個字元或字元群組。
  • 閱讀每個模式字串的描述,以判斷其套用至您要比對之數據的方式。
  • 判斷數據表中的哪一個模式字串代表該字元或字元群組,並將該模式字串新增至正則表達式。

注意事項

傳輸規則中使用的正則表示式 區分大小寫。

下列範例會比對格式為 425 555-0100 和 425.555.0100 的北美電話號碼:

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

您可以藉由新增電話格式 (425) 555-0100 來展開此範例,其會使用括弧括住分區碼。

下列範例會比對所有三種電話號碼格式。

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

您可以依下列方式分析前述範例:

  • \d\d\d:必須先顯示三個數位。
  • ((\s|.|-|\)|\)\s):需要三位數數字後面有空格、句點或連字元。 每個字元比對字串都包含在群組分隔符中,並以管道字元分隔。 此分隔表示群組分隔符內只有一個指定的字元可以存在於要比對之字串的這個位置。 若要分隔分區碼和接下來的三位數,它也會尋找封閉括弧或封閉括弧和空格。
  • \d\d\d:要求下一個只會出現三個數值。
  • (\s|.|-):需要三位數數字後面有空格、句點或連字元。
  • \d\d\d\d:要求下一個只會出現四個數值。

上述範例符合下列值:

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

建立使用正則表達式的郵件流程

下列範例會在 Exchange Online PowerShell 中建立郵件流程規則,以使用正則表示式來比對電子郵件訊息主旨中的 SSN:

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"

如需詳細的語法和參數資訊,請參閱 New-TransportRule

下列範例顯示新的郵件流程規則:

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

如需詳細的語法和參數資訊,請參閱 Get-TransportRule