【问题标题】:Disallow if user eneter All special characters in textbox validation c#如果用户输入文本框验证中的所有特殊字符,则禁止 c#
【发布时间】:2015-01-16 12:42:52
【问题描述】:

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

请帮帮我。

【问题讨论】:

    标签: c# asp.net regex special-characters


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 当我添加 %&^%& 或 !@#$%^&*() 它没有向我显示错误,意味着它接受这个,但我不想要那个....
    • 将额外的特殊字符添加到上述字符类中。即@^ 等。但不要将^ 放在字符类的第一个位置。查看我的更新..
    • 很好,正是我现在需要的!再次感谢:)
    • 立即尝试...我认为您不想只允许数字和特殊字符。
    • 如果您不想允许 ______,请将 _ 添加到字符类中
    【解决方案2】:

    您可以使用 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  
    

    【讨论】:

      猜你喜欢
      • 2015-09-13
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多