如果用户在文本框验证中输入所有特殊字符,则禁止c#

时间:2015-01-16 12:42:53

标签: c# asp.net regex special-characters

我正在进行验证,我必须验证一个文本框,我需要禁止输入特殊字符。我的意思是如果用户只填写文本框中的特殊字符,那么我们需要禁止他,如果他使用测试测试 test_test (999)-998 -1111 然后我们需要允许用户输入数据。

我使用了下面的正则表达式,但这是不允许的,即使我输入一个特殊字符。它告诉我错误。

<asp:RegularExpressionValidator ID="ReqValContactPerson_SpecialChars" runat="server" CssClass="changecolor" 
                    ControlToValidate="txtFirstName" Display="Dynamic" 
                    ErrorMessage="Please enter valid first name" SetFocusOnError="True" 
                    ValidationExpression="[\%\/\\\&\?\,\'\;\:\!\-]+" 
                    ></asp:RegularExpressionValidator>

请帮帮我。

2 个答案:

答案 0 :(得分:2)

以下正则表达式不允许在该文本框中仅显示提到的特殊字符。

ValidationExpression="^(?![\%\/\\\&\?\,\'\;\:\!\-]+$).+" 

OR

仅禁止数字和/或非单词字符。

 ValidationExpression="^(?![\d\W]+$).+" 

\W匹配任何非单词字符。 \d+匹配一个或多个数字。

也就是说,这不允许%&',但允许此f%G'。仅当您还想允许空行时才将.+更改为.*

答案 1 :(得分:1)

您可以使用LINQ测试它:

string str = "test-test";
bool allow = str.Any(c => Char.IsLetterOrDigit(c));  //true

string str2 = "____!&&**^%$##@";      
bool allow2 = str2.Any(c => Char.IsLetterOrDigit(c)); // false

string str3 = "(999)-998-1111";
bool allow3 = str3.Any(c => Char.IsLetterOrDigit(c)); // true