如果用户输入文本框验证中的所有特殊字符,则不允许 C#

Disallow if user eneter All special characters in textbox validation c#

我正在进行验证,我必须验证一个文本框,我需要在其中禁止输入特殊字符。我的意思是,如果用户只在文本框中填写特殊字符,那么我们需要禁止他,如果他使用 test-testtest_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>

请帮助我。

下面的正则表达式不允许在该文本框中只出现提到的特殊字符。

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

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

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

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

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

你可以用 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