2011-12-29 49 views
4

我有這個要求來檢查來自給定用戶輸入的字符,數字和幾個特殊字符。輸入可以有A-Z,a-z,0-9,。,?和>。它不應該有任何其他特殊字符。輸入驗證正則表達式的問題

如果輸入有一個,它應該停在那裏,並做一些其他的工作人員。我試圖寫的正則表達式這樣的(如下圖),但它一直給總是假的 - 我不知道我錯過了什麼:

string[] vals = allParams.Split(':'); 
Regex rgx = new Regex(@"^[a-zA-Z0-9?>.]$"); 
foreach (string value in vals) 
{ 
    string result = rgx.IsMatch(value).ToString(); 
    if (result == "False") 
     return; 
} 
+3

轉換一個'bool'到'string'只是爲了與其他'string'比較實在吹拂我的心靈關閉。 – 2011-12-29 20:28:20

+0

同意Uwe。原始海報:您可以將第5行和第6行合併爲:if(!rgx.IsMatch(value))' – ean5533 2011-12-29 20:31:15

+0

也請記住,如果您不想使用RegEx,則也可以使用Char。方法以及僅供參考 – MethodMan 2011-12-29 20:46:08

回答

6

正則表達式貼:

"^[a-zA-Z0-9?>.]$" 

匹配一個單個字符串的開始和結束之間的字符。

下面將搜索一個或多個字符:

"^[a-zA-Z0-9?>.]+$" 

注 - 關於你一個bool的往返。這是做一個更好的辦法:

bool result = rgx.IsMatch(value); 
if (!result) 
    return; 

或者更短:

if(!rgx.IsMatch(value)) 
    return; 
+0

您的上一個代碼示例(「IsMathc」)中存在拼寫錯誤 – ean5533 2011-12-29 20:37:18

+1

@ ean5533 - 謝謝。通過一切手段,隨時糾正自己的錯別字。 – Oded 2011-12-29 20:37:50

+0

甚至更​​短:不要打擾創建正則表達式實例,調用靜態(它會自動緩存模式) Regex.IsMatch(value,@「^ [a-zA-Z0-9?>。] + $」 ) – OmegaMan 2011-12-30 01:29:21