验证文本框应包含一个数字和一个特殊字符

时间:2017-04-11 08:10:32

标签: c# winforms

This is my design

这是我的C#代码:

 private void btnLogin_Click(object sender, EventArgs e)
  {
     if (Regex.IsMatch(txtPassword.Text, @"(!|@|#)"))
      {
      MessageBox.Show("Password Must Contain at least a special character");
       }

       else
       {
     SqlConnection con = new SqlConnection("Data Source=Sumit;Initial Catalog=BroadDB;Integrated Security=True");
    string sql = "select * from tblLogin where username=@username and password=@password";
      SqlCommand cmd = new SqlCommand(sql, con);
      cmd.Parameters.AddWithValue("@username", txtUsername.Text);
      cmd.Parameters.AddWithValue("@password", txtPassword.Text);

   SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataTable dt = new DataTable();
    da.Fill(dt);

    if (dt.Rows.Count > 0)
     {
      Form2 obj = new Form2();
      obj.Show();
     }

   else
    {
      MessageBox.Show("Invalid Data");
    }
  }        
    }

如果在单击登录按钮时验证密码应包含至少一个数字和一个特殊字符。

3 个答案:

答案 0 :(得分:0)

很抱歉,我还没有发表评论,但是你不是已经使用正则表达式作为特殊字符吗?

  if (Regex.IsMatch(txtPassword.Text, @"(!|@|#)"))
  {
  MessageBox.Show("Password Must Contain at least a special character");
  }

如果我理解你的问题,你也可以用数字或字母来理解。

看看这个已回答的问题,它可以帮到你:

How to check if a String contains any letter from a to z?

更新

这是因为你没有使用 - > !在Regex.IsMatch之前,所以MessageBox仅在用户输入特殊字符时出现,而不是在他不这样做时出现。

尝试使用这个:

  if (!Regex.IsMatch(txtPassword.Text, @"(!|@|#)"))
  {
  MessageBox.Show("Password Must Contain at least a special character");
  }

答案 1 :(得分:0)

您可以通过测试从用户输入中检索的字符串来实现此目的。为此,您最好使用regex

Regex regexPassword = new Regex( @"
  ^               // From the start of the string
  [a-zA-Z0-9!@#]+ // The string should contain some of these characters, like letters including digits and special chars      
  (<=[!@#])       // one of these should be a special character
  (<=[0-9])       // one of these should be a number
  $               // end of string
" , RegexOptions.IgnorePatternWhitespace ) ;

然后你可以像往常一样对着你的字符串测试你的正则表达式:

if(regexPassword.IsMatch(yourPasswordString))
{
    //Do what you want
}

答案 2 :(得分:0)

尝试以下代码

if (!Regex.IsMatch(txtPassword.Text, @"(!|@|#)") || !txtPassword.Text.Any(char.IsDigit))
{
    Console.WriteLine("Password Must Contain at least a special character and digit");
}
else
{
    // DO YOUR STUFF
}