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