2017-01-27 10 views
1

私は電子メール、パスワード、およびユーザー名の入力が正当であるかどうかを確認するためにRegexを使用しています。それは確認されていません。ユーザーは自分が望むものを入力することができ、それは自分のデータベースに入ります。Regexとブーリアンを使用して入力をサニタイズする

私は関数を実行するためにすべてのブール値が真であることを望みます。

private void bunifuFlatButton2_Click(object sender, EventArgs e) 
    { 
     string username = textBox1.Text; 
     bool IsRealUser = Regex.IsMatch(username, @"\A(?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)\Z"); 
     string password = textBox2.Text; 
     bool IsRealPass = Regex.IsMatch(password, @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,15}$"); 
     string email = textBox4.Text; 
     bool IsRealEmail = Regex.IsMatch(email, @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"); 

     if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "") 
     { 
      System.Windows.Forms.MessageBox.Show("Fill out the required forms!"); 
      return; 
     } 
     else if (textBox2.Text != textBox3.Text) 
     { 
      System.Windows.Forms.MessageBox.Show("Your passwords are not matching"); 
     } 

     else if (IsRealPass || IsRealUser || IsRealEmail) //I want all these inputs to be true in order to execute //function. 
     { 
      //function 
     } 

答えて

3

書かれているように、いずれかのテストが真であれば、ブロックが実行されます。

else if (IsRealPass || IsRealUser || IsRealEmail) 
    { 
     //function 
    } 

&&ブロックを実行するには、すべてのテスト条件が真でなければなりません。

else if (IsRealPass && IsRealUser && IsRealEmail) 
    { 
     //function 
    } 
+0

ありがとうございました!私はこれに多くの時間を費やしてきました。 – OracleStart

+0

はい、ブール型AND '&&'ではなく、ブール型AND '&&'を使用する必要があります。 ORで、単一項が真であれば、式全体が真です。 – chadnt

+0

@OracleStart '||'はORを意味し、 '&&'はAND –

関連する問題