2015-04-14 177 views
0

您好我想在ASP文本框來檢查用戶不輸入下列字符:正則表達式來排除字符

&'"<> 

我已經給喜歡

<asp:CustomValidator ID="cvtxtName" runat="server" OnServerValidate="SpecialCharactersFilter" ControlToValidate="txtName" ErrorMessage="Special characters not allowed" /> 

和C#代碼

一個的CustomValidator
protected void SpecialCharactersFilter(object sender, ServerValidateEventArgs e) 
    { 
     e.IsValid = !Regex.IsMatch(e.Value, @""); 
    } 

但我堅持寫正則表達式。

+0

到目前爲止,是否有人試圖寫一篇文章? – bit

+0

查找字符類,這可能有幫助... – Mithrandir

+0

爲什麼不使用regularexpressionvalidator:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.regularexpressionvalidator%28v=vs.110% 29.aspx – mortb

回答

1

試試這個:

e.IsValid = Regex.IsMatch(e.Value, "^[^&'\"<>]+$"); 

^標誌着字符串的開頭

[^]表示方括號內的任何字符是不允許

+意味着一次或多次(這意味着您的輸入必須至少有1個字符長才能通過IsMatch測試)

e.IsValid = !e.Value.Intersect("&'\"<>").Any(); 

您需要添加using System.Linq的擴展方法:$因爲你使用CustomValidator代替RegularExpressionValidator,我會告訴你一個非正則表達式的解決方案,標誌着該字符串

+2

必須逃脫「...」「 –

+0

你是正確的,只是注意到我自己:-) –

+0

獲取.net正則表達式這個工具是好的... http://derekslager.com/blog/posts/ 2007/09/a-better-dotnet-regular-expression-tester.ashx ...如果你得到一個匹配結果,你可以在結果中得到正確的逐字字符串,你可以複製/粘貼 –

1
protected void SpecialCharactersFilter(object sender, ServerValidateEventArgs e) 
{ 
    e.IsValid = !Regex.IsMatch(e.Value, @"[&'""<>]+"); 
} 
1

結束。

+0

你真的在用匕首繪製正則表達式=) –

+0

@florian:你讓我在那裏:) –

+0

或甚至一個非linq解決方案:'e.IsValid =(str.IndexOfAny(「&'\」<>「。ToCharArray())== -1)' –