【问题标题】:How to display the first special character entered in textbox, in a label如何在标签中显示在文本框中输入的第一个特殊字符
【发布时间】:2017-01-20 09:43:23
【问题描述】:

我创建了一个正则表达式函数并在保存数据时调用它。

public static bool CheckSpecialCharacter(string value)
{
   System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"[~`!@#$%^*()=|\{}';.,<>]");
   if (regex.IsMatch(value))
   {
      return false;
   }
   else
   {
      return true;
   }
}

在这里使用:

if (ClassName.CheckSpecialCharacter(txt_ExpName1.Text)==false)
{
    lblErrMsg.Text = "Special characters not allowed";
    return;
}

现在我不想写“不允许特殊字符”,而是想附加在文本框中输入的第一个特殊字符,所以 如果输入了@,则消息应读作“不允许使用特殊字符@”

可以这样做吗?请帮忙。谢谢。

【问题讨论】:

    标签: c# asp.net regex


    【解决方案1】:

    试试下面的代码。

    public static string CheckSpecialCharacter(string value)
    {
       System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"[~`!@#$%^*()=|\{}';.,<>]");
       var match = regex.Match(value);
       if (match.Success)
       {
          return match.Value;
       }
       else
       {
          return string.empty;
       }
    }
    

    用法:

    var value = ClassName.CheckSpecialCharacter(txt_ExpName1.Text);
    if (!string.IsNullOrEmpty(value ))
    {
        lblErrMsg.Text = value + " Special characters not allowed";
        return;
    }
    

    或者你可以通过返回 bool 并在函数中添加一个 out parameter 来做到这一点,但我不建议这样做.. check this link

    编辑 - 在 Javascript 中做同样的事情

    function CheckSpecialCharacter(value)
    {
      var res = value.match(/[~`!@#$%^*()=|\{}';.,<>]/g);
      return res == null ? "" : res[0];
    }
    

    用法:

    var value = CheckSpecialCharacter(document.getElementById("txt_ExpName1").value);
    
    if(value != "")
    {
       document.getElementById("lblErrMsg").innerHTML = value + " Special characters not allowed";
    }
    

    【讨论】:

    • 没有必要使用两次正则表达式。只需使用regex.Match,然后检查match.Success 是否为true
    • @KD 这很有效,非常感谢!你能告诉我如何在 javascript 中做同样的事情吗?
    • 我编辑了答案,请检查代码是否可以正常使用 javascript
    【解决方案2】:

    试试这个:

    public static bool CheckSpecialCharacter(string value, out string character)
    {
        var regex = new System.Text.RegularExpressions.Regex(@"[~`!@#$%^*()=|\{}';.,<>]");
        var match = regex.Match(value);
        character = regex.Match(value).Value;
        return match.Length == 0;
    }
    

    然后

    string character;
    if (ClassName.CheckSpecialCharacter(txt_ExpName1.Text, out character) == false)
    {
        lblErrMsg.Text = character + " Special characters not allowed";
        return;
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 Regex 中的 Matches(string) 函数来获取匹配项,然后像这样检查第一个元素:

      var regex = new Regex(@"[~`!@#$%^*()=|\{}';.,<>]");
      var matches = regex.Matches("This contains # two b@d characters");
      if (matches.Count > 0)
      {
          var firstBadCharacter = matches[0];
      }
      

      然后您可以将检查结果包装在 Exception 中:

      throw new ArgumentException("Special character '" + firstBadCharacter + "' not allowed.");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-19
        • 2018-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多