您好我想检查用户不输入以下字符的ASP TextBox:
&'"<>
我已经提供了像
这样的CustomValidator<asp:CustomValidator ID="cvtxtName" runat="server" OnServerValidate="SpecialCharactersFilter" ControlToValidate="txtName" ErrorMessage="Special characters not allowed" />
和c#代码
protected void SpecialCharactersFilter(object sender, ServerValidateEventArgs e)
{
e.IsValid = !Regex.IsMatch(e.Value, @"");
}
但是我一直坚持写正则表达式。
答案 0 :(得分:1)
试试这个:
e.IsValid = Regex.IsMatch(e.Value, "^[^&'\"<>]+$");
^
标记字符串的开头
[^]
表示方括号内的任何字符都不允许
+
表示一次或多次(意味着您的输入必须至少有1个字符长才能通过IsMatch测试)
$
标记字符串的结尾
答案 1 :(得分:1)
protected void SpecialCharactersFilter(object sender, ServerValidateEventArgs e)
{
e.IsValid = !Regex.IsMatch(e.Value, @"[&'""<>]+");
}
答案 2 :(得分:1)
因为您使用CustomValidator
代替RegularExpressionValidator
,我会向您展示非正则表达式解决方案:
e.IsValid = !e.Value.Intersect("&'\"<>").Any();
您需要为扩展方法添加using System.Linq
。