如何在标签

时间:2017-01-20 09:43:23

标签: c# asp.net regex

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

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;
}

现在我没有写“不允许特殊字符”,而是想附加在文本框中输入的第一个特殊字符,所以 如果输入@,则该消息应显示为“特殊字符@不允许”

有可能这样做吗?请帮忙。谢谢。

3 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分:0)

试试这个:

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;
}

答案 2 :(得分:0)

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

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

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