了解原則規則語法
適用於: Office 365 Enterprise, Live@edu, Forefront Online Protection for Exchange
主題上次修改日期: 2012-05-02
在 Forefront Online Protection for Exchange (FOPE) 中建立原則規則時,您有兩種語法規則可以選擇。第一種:您可以使用逗號分隔值 (CSV) 混合字串萬用字元語法,這在 FOPE Administration Center 原則規則編輯器中是列為 [Basic]。第二種:您可以使用規則運算式語法中所指定字元的子集來建立更複雜的規則,這在 FOPE Administration Center 原則規則編輯器中是列為 [RegEx]。
如果您不熟悉 RegEx 語法,可以選取 [Basic] 選項。這個選項可讓您為內容篩選建立簡單的運算式,並根據定義運算式的內容來評估比對運算式,協助您撰寫正確的比對運算式格式。例如,只有正確的 IP 位址才能在 IP 位址欄位中被接受。如果您要建立的規則需要更高的複雜度 (例如比對數字的模式和字詞的模式),則您可以選取 [RegEx] 選項,使用 RegEx 語法字元的子集。使用這個選項時,無法使用內容驗證,而只能套用特定語法驗證。
Basic 語法
當您在 [原則規則] 編輯器中選取 [Basic] 時,將能夠使用 CSV 語法列出運算式,以逗號隔開比對運算式。此外,您也將能夠以簡單的字串萬用字元中繼字元來加強比對運算式。相同的語法也適用於透過 [篩選] 上傳的字典檔案。
Basic 語法的定義
中繼字元 | 描述 | 範例 |
---|---|---|
, |
逗號是選擇中繼字元,也稱為替代或分隔字元,會比對列在逗號之前或之後的運算式。 |
abc, def, xyz 會比對 abc 或者 def 或者 xyz |
* |
星號是萬用字元中繼字元,代表零個字元或多個字元。 注意 這個字元等同於 RegEx 語法中的 (.*)。 |
ab* 會比對 aba 或者 abaa 或者 abaaa 或者 ab12345667 等 |
? |
問號代表任何單一字元。 注意 這個字元等同於 RegEx 語法中的 (.)。 |
ab? 會比對 aba 或者 abb 或者 abc 或者 ab1 或者 ab2 等 |
\ |
反斜線是逸出運算子。若要比對常值 (,) (*) (?) 或 (\) 並抑制其在 Basic 語法中的特殊意義,必須在 Basic 語法運算子之前加上逸出運算子。 注意 這個字元等同於 RegEx 語法中的 () 。 |
\*a\\bc\? 會比對 *a\bc? |
/0 到 /32 |
斜線符號代表無類別域內郵件路由 (CIDR) 表示法。這可以在 IP 位址的最後八進位之後加上斜線符號 (/),然後再加從 0 到 32 的數字來表示。 注意 CIDR 表示法只能套用至 IP 位址運算式,而不能用於其他內容中。 |
99.99.98.0/23 會比對從 99.99.98.0 到 99.99.99.255 的 IP 範圍 |
注意
插入任何 [原則規則] 欄位或字典的字元總數不能超過 9,000 個。字典檔案大小限制為 2 MB。
RegEx 語法
當您在 [原則規則] 編輯器中選取 [RegEx] 時,將能夠指定更複雜的運算式,以比對文字、數字或特殊字元的模式。例如,您可以使用 RegEx 字元的子集比對許多不同的字組變化,例如 viagra、vi@gra、vlagra。這可以讓您將所需的規則數目減到最少,並建立功能強大的比對運算式,例如掃描信用卡號碼、身分證號碼、電子郵件地址,以及機密字眼或數字的類似字串。
RegEx 語法的定義
[原則規則] 編輯器中的 RegEx 選項是 POSIX Basic 和延伸規則運算式語法的子集,以下表中的方式來表示。
字元類型 | 字元 | 描述 | 範例 |
---|---|---|---|
中繼 |
^ |
插入號中繼字元會比對字串之中的開頭位置。 注意 與貨幣符號字元結合使用,插入號與完全相符選項有相同的功能。 |
^abc 比對會符合 abc1234,但比對不符合 1234abc |
中繼 |
$ |
貨幣符號中繼字元會比對字串的結尾位置,或就在字串結尾新行之前的位置。 注意 與插入號字元結合時,貨幣符號會提供與完全相符選項相同的功能。 |
abc$ 比對會符合 1234abc,但比對不符合 abc1234 |
中繼 |
* |
星號會比對之前元素零次或多次。 重要 使用這個字元時應該小心謹慎,使用這個字元的比對運算式可能會有超過預期數目的相符項。 |
ab*x 比對會符合 abx 或者 abbx 或者 abbbx 或者 abbbbx 等 |
中繼 |
+ |
加號中繼字元會比對之前元素一次或多次。 使用這個字元時應該小心謹慎,使用這個字元的比對運算式可能會有超過預期數目的相符項。 |
ab+x 比對會符合 abbx 或者 abbbx 或者 abbbbx 或者 abbbbbx 等 |
中繼 |
. |
句號中繼字元會比對新行以外的任何單一字元。 |
ab.x 比對會符合 ab1x 或者 ab2x 或者 ab3x 或者 ab4x 等 |
中繼 |
? |
問號會比對之前元素零次或一次。 |
ab? 會比對 a 或者 ab |
中繼 |
| |
管線是選擇或替代字元,會比對列在運算子之前或之後的運算式,從第一個 (左邊) 字串開始,在找到相符項時停止。 |
abc|def|xyz 比對會符合 abc 或者 def 或者 xyz 或者 abc12345,但比對不符合 a123c 或者 axm |
中繼 |
\ |
反斜線會導致在規則內容中將 RegEx 中繼字元視為常值字元處理。 |
x\*1\.5\+9\\x=y 比對會符合 x*1.5+9\x=y |
類別 |
(\w) |
反斜線加上小寫 w 會比對任何字詞字元,包括含 "_" 的英數字元。 |
\w123 比對會符合 a123 或者 bbb123 或者 c_c123xxx,但比對不符合 @123 |
類別 |
\d |
反斜線加上小寫 d 會比對任何十進位數字。 |
\dabc 比對會符合 123abc 或者 12345abcxxx 或者 1abc1,但比對不符合 abc123 或者 @abc123 |
類別 |
\s |
反斜線加上小寫 s 會比對任何空格字元。 |
abc\sdef 比對會符合 abc def |
重要
如果您不熟悉 RegEx 語法,我們建議您使用 [Basic] 選項或測試規則,方式是使用 [測試] 原則規則動作,再搭配 [拒絕]、[加密]、[重新導向] 之類原則規則動作一起使用。[Administration Center 原則規則] 只支援 RegEx 字元的子集。
插入任何 [原則規則] 欄位的 RegEx 字元總數不能超過 9,000 個。
使用 RegEx 建立比對運算式的其他範例
下列是 RegEx 運算式比對郵件不同部分的範例:
用來比對檔案副檔名的句號會比對運算式之後的任何單一字元。例如,r. 會比對以字母 r 開頭及其後面任何單一字元的任何檔案名稱。例如,比對運算式 r. 會比對如 r1 之類或其他兩個字元組合的運算式。
若要比對為常值,所有 RegEx 中繼字元都必須附上逸出運算子。非 RegEx 中繼字元則是逐字進行比對,而不需要加上逸出運算子。如果您要比對網域名稱中的句號,這個句號需要加上逸出字元,方法是列出 \.。比對運算式 contoso\.com 會比對 contoso.com。
針對 [網域] 選項,網域比對會在電子郵件標頭中有寄件者或收件者網域存在時採取動作。例如,規則要在 contoso.com 上採取動作也會影響子網域 123.contoso.com 的郵件。如果您只要比對網域名稱而不加任何子網域,則您可以使用插入號中繼字元 ^contoso.com 來設定規則。以此方式設定的規則只會比對傳送至 contoso.com 或從 contoso.com 送來的電子郵件,而不會比對 123.contoso.com。
如果您想要搜尋 (例如,電子郵件的主旨、內文或附件檔案名稱中) 以 “ness” 字串結尾的字詞,則可組合星號和句號來執行比對。例如,搜尋字詞 .*ness 將會傳回類似 “wilderness” 或 “happiness” 的結果。
句號 . 後面加上星號 (*) 代表零個字元或多個字元。例如,比對運算式 contoso\..* 會比對 “contoso.com”,但也會比對 “contoso.microsoft.com” 或 “contoso.mydomain.ca” 等。若只要比對網域的上層網域 (TLD),需要更精準的比對運算式。contoso\.\w\w\w$ 將比對 “contoso.com” 或 “contoso.org” 或 “contoso.tv1”,但不會比對句號之後含 3 個以上或以下英數字元的任何網域。
關於規則運算式
規則運算式縮寫為 RegEx,是用於多種系統和程式設計語言中的標準正規語言。如果運用得當,規則運算式也可以發揮強大的功能。您可以在許多網站上找到更多資訊,包括語法定義、範例和教學課程,例如下列網站:
-
MSDN 規則運算式簡介