在 NPS 中使用正規代表式

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016

本主題介紹如何使用正規代表式在 Windows Server 的 NPS 中進行模式比對。 您可以使用此語法指定網路策略屬性和 RADIUS 領網域的條件。

注意

NPS 控制台和 NPS MMC 管理單元對於採用字串值的所有設置都有 256 個字元的限制。 這包括可以使用正規代表式設置的所有設置。 若要設置超過 256 個字元的字串值,請使用 NETSH NPS 指令。 如果設置的字串值超過 256 個字符,則無法在 NPS 控制台或 NPS MMC 管理單元中進行編輯,除非它們失效。

模式匹配參考

使用模式比對語法建立正規代表式時,可以使用下表作為參考來源。 請注意,正規代表式模式通常由正斜線 (/) 包圍。

字元 描述 範例
\ 代表後面的字符是特殊字符,或應該點選字面解釋。 /n/ matches the character "n" while the sequence /\n/ matches a line feed or newline character.
^ 符合輸入或行的開頭。  
$ 匹配輸入或行的結尾。  
* 匹配前面的字元零次或多次。 /zo*/ matches either "z" or "zoo."
+ 匹配前面的字元一次或多次。 /zo+/ matches "zoo" but not "z."
? 匹配前面的字元零次或一次。 /a?ve?/ matches the "ve" in "never."
. 匹配除換行符之外的任何單一字元。  
(pattern) 匹配模式並記住匹配。
若要匹配文字字元()(括號),\(請使用或\)
 
x | y 匹配 x 或 y。
{n} 精確匹配 n 次(n 是非負整數)。 /o{2}/ does not match the "o" in "Bob," but matches the first two instances of the letter o in "foooood."
{n,} 至少匹配 n 次(n 為非負整數)。 /o{2,}/ does not match the "o" in "Bob" but matches all of the instances of the letter o in "foooood." /o{1,}/ is equivalent to /o+/.
{n,m} 配對至少 n 次、最多 m 次(m 和 n 為非負整數)。 /o{1,3}/ matches the first three instances of the letter o in "fooooood."
[xyz] 匹配任何一個包含的字元(字元集)。 /[abc]/ matches the "a" in "plain."
[^xyz] 匹配任何未包含的字元(負字元集)。 /[^abc]/ matches the "p" in "plain."
\b 匹配單字邊界(例如空格)。 /ea*r\b/ matches the "er" in "never early."
\B 匹配非單字邊界。 /ea*r\B/ matches the "ear" in "never early."
\d 匹配數字字元(相當於 0 到 9 的數字)。  
\D 匹配非數字字元(相當於[^0-9])。  
\f 符合換頁符號。  
\n 匹配換行符。  
\r 匹配回車符。  
\s 匹配任何空白字符,包括空格、製表符和換頁符(相當於[ \f\n\r\t\v])。  
\S 匹配任何非空白字元(相當於[^ \f\n\r\t\v])。  
\t 比對 Tab 字元。  
\v 匹配垂直製表符。  
\w 匹配任何單字字符,包括下劃線(相當於[A-Za-z0-9_])。  
\W 匹配任何非單字字符,不包括下劃線(相當於[^A-Za-z0-9_])。  
\num 指記住的匹配項(其中 num ?num是正整數)。 設置屬性操作時,此選項只能在取代文字方塊中使用。 \1替換儲存在第一個記住的匹配中的內容。
/n/ 允許將 ASCII 代碼插入到正規代表式中(其中 n ?n是八進制、十六進位或十進制轉義值)。  

網路策略屬性範例

以下範例說明如何使用模式比對語法來指定網路策略屬性:

  • 若要指定 899 區號內的所有電話號碼,語法為:

    899.*

  • 若要指定以 192.168.1 開頭的 IP 位址範圍,語法為:

    192\.168\.1\..+

使用者名稱屬性中網域名稱的操作範例

注意

範疇操作在 PEAP 中不起作用。
可以透過切換到 EAP-TLS 或 EAP-MSCHAPv2進行身份驗證或為需要解析的每個其他網域增加 UPN 字尾來實現所需的行為。

以下範例說明如何使用模式比對語法來操作「使用者名稱」屬性的領網域名稱,該屬性位於連線請求策略屬性的「屬性」標籤上。

刪除使用者名稱屬性的領網域部分

在 Internet 服務供應商 (ISP) 將連線要求路由到機構 NPS 的外包撥號方案中,ISP RADIUS 代理程式可能需要網域名稱來路由驗證請求。 但是,NPS 可能無法辨別使用者名稱的領網域名稱部分。 因此,網域必須由 ISP RADIUS 代理程式刪除,然後才能轉發到機構 NPS。

  • 尋找:@microsoft\.com

  • 將:

替換user@example.microsoft.comexample.microsoft.com\user

  • 尋找:(.*)@(.*)

  • 將:$2\$1

domain\user 替換為 specific_domain\user

  • 尋找:(.*)\\(.*)

  • 替換:specific_domain\$2

使用者替換user@specific_domain

  • 尋找:$

  • 替換:@specific_domain

代理伺服器轉發 RADIUS 訊息範例

當 NPS 作為 RADIUS 代理程式時,您可以建立路由規則,將具有指定領網域名稱的 RADIUS 訊息轉送到一組 RADIUS 伺服器。 以下是基於網域路由請求的建議語法。

  • NetBIOS 名稱: WCOAST
  • 格式: ^wcoast\\

在下列範例中,wcoast.microsoft.com 是 DNS 或 Active Directory 網域 wcoast.microsoft.com 的唯一使用者主體名稱 (UPN) 字尾。 使用提供的模式,NPS 代理程式可以依據網域 NetBIOS 名稱或 UPN 字尾路由訊息。

  • NetBIOS 名稱: WCOAST
  • UPN 字尾: wcoast.microsoft.com
  • 格式: ^wcoast\\|@wcoast\.microsoft\.com$

更多管理 NPS 的詳細資訊,請參閱 管理網路原則伺服器

更多 NPS 的詳細資訊,請參閱 Network Policy Server (NPS)