正则表达式排除字符

时间:2015-04-14 06:56:34

标签: c# .net regex

您好我想检查用户不输入以下字符的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, @"");
    }

但是我一直坚持写正则表达式。

3 个答案:

答案 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