2011-05-10 154 views
0

對於用戶名字段,存在某些不能作爲合適用戶名選擇的虛擬變量,也不能使用某些字符。在正則表達式C中禁止反斜槓#

例如:TIM1 .... TIM9不能用於BIN1 .... BIN9不能使用,也不能<>:\/|?*出現在字段的任何位置的字符。

我到目前爲止的代碼是這樣的:

private bool ValidateId(string regexValue) 
    { 
     Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\"/|?*]"); 
     return !regex.IsMatch(regexValue); 
    } 

什麼我掙扎允許然而是反斜槓字符。試圖逃避它,因爲我已經做了引用字符似乎並沒有工作。

在此先感謝。

+0

爲*允許*呢?這意味着反斜槓是一個有效的字符? – riwalk 2011-05-10 15:38:15

+0

什麼反斜槓字符?你能否展示正則表達式應該看起來像沒有任何C#字符串轉義搞亂它? – 2011-05-10 15:38:17

+1

驗證你想要的東西總是一個更好的主意,而不是你不想要的東西。 – 2011-05-10 15:39:10

回答

4

你需要做一個雙重轉義。試試這個:

Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\\\\\"/|?*]"); 

說明:

你一定要逃逸C#字符串反斜槓得到字符串中的反斜槓。此外,該字符串需要有兩個反斜槓,因爲正則表達式還需要反斜槓。

BTW,採用逐字字符串使得它多一點可讀性:

Regex regex = new Regex(@"TIM[1-9]|BIN[1-9]|[<>:\\""/|?*]"); 

兩個代碼將導致正則表達式與這個表達式:

TIM[1-9]|BIN[1-9]|[<>:\\"/|?*] 
相關問題