ASP.NET中针对特殊字符的正则表达式验证

时间:2015-07-08 08:26:25

标签: asp.net .net regex validation

我需要验证Regex中的场景,我在ASP.NET中使用RegularExpression验证。

  1. 不应该以SPACE开始或结束
  2. 不仅包含SPACE
  3. 整个字符串不应该包含两个特殊字符" @" &安培; ""
  4. 有效:

    "as#d qwe2", "&^%$$(&+_", "12#$.p"
    

    无效:

    "  ", "asd ", " asd#", "ksdhf?kh", "asdf@asd"
    

    我正在尝试这个:

    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1"
            ErrorMessage="RegularExpressionValidator" 
            ValidationExpression="^[^\s]+(\s+[^@?]+)*[^\s]$">Error</asp:RegularExpressionValidator>
    

2 个答案:

答案 0 :(得分:0)

未经测试的RegEx:^([^ @?][^@?]*[^ @?]|[^ @?])$

答案 1 :(得分:0)

您目前正在使用的正则表达式存在一些问题:

  1. ^[^\s]+匹配几乎所有字符串,如果它不是以空格字符开头(因此匹配@?)。

  2. 由于构造正则表达式的方式,您只能输入长度为2及以上的字符串。这是一个小小的挫折,但可以避免。

  3. 我建议使用否定前瞻,因为在第一个字符上有多个“检查”:

    ^(?!\s|.*\s$)[^?@]+$
    
    如果字符串以(?!\s|.*\s$)开头或以\s结尾且\s匹配除[^?@]+?之外的所有字符,

    @将阻止匹配}。仅空格字符串将自动被拒绝,因为仅空格字符串必须以空格开头。