电子邮件地址检查列表框项目

时间:2016-09-17 17:15:24

标签: c# string email listbox

这是一个家庭作业问题,但我真的被困住了,非常感谢你的帮助。它确实很小,可以修复它。 Q使用正则表达式,编写一个程序,输入建议的电子邮件地址并报告是否接受。必须是someone@someaddress.co.za的形式。然而,有一个扭曲,允许用户输入特殊单词,如网站管理员,列表框中的政府,如果它包含这些单词之一,也将拒绝该电子邮件地址。现在我尝试了以下内容,但即使列表框中没有任何内容,它也会给我“无效的电子邮件”。第一个if语句完美运行..我的问题是从列表框中获取这些特殊单词以拒绝电子邮件。谢谢米勒家伙

    private void button1_Click(object sender, EventArgs e)
    {

        string special = null;
        special = Convert.ToString(listBox1.Text);
        string pattern = null;
        pattern = "^([0-9a-zA-Z]([-\\.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";

        if (Regex.IsMatch(textBox1.Text, pattern)) 
        {
            MessageBox.Show("Valid Email address");

        }

        if (Regex.IsMatch(textBox1.Text, special))
            {
            MessageBox.Show("Not a valid Email address");
        }

        else
        {
            MessageBox.Show("Not a valid Email address");
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        listBox1.Items.Add(textBox2.Text);

    }

    private void button3_Click(object sender, EventArgs e)
    {


            listBox1.Items.Remove(listBox1.SelectedItem);

    }
}

}

2 个答案:

答案 0 :(得分:1)

我首先要在课程顶部定义您的电子邮件地址模式和保留字列表:

private const String PATTERN = "^([0-9a-zA-Z]([-\\.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";
private List<String> _reserved;

public Form1()
{
    InitializeComponents();
    _reserved = new List<string>();
    _reserved.Add("admin");
    _reserved.Add("administrator");
    _reserved.Add("government");
    _reserved.Add("helpdesk");
    _reserved.Add("webmaster");
}

使用不允许的任何字词填写此列表。按字母顺序填写它们有助于在需要添加或删除某些内容时维护列表。

上面,列表是预先填充的,但它也可以是您根据需要创建的任何列表。

通过在列表中查看保密字来检查是否有人提供了保留字:

private bool Reserved(String email)
{
    var result = false;
    if (!String.IsNullOrEmpty(email))
    {
        var lc = email.ToLower();
        result = _reserved.Any(x => -1 < x.IndexOf(lc));
    }
    return result;
}

如果集合中的任何单个项目(由上面的x表示)与以下条件-1 < x.IndexOf(lc))匹配,则Enumerable.Any Method会返回布尔值True。

String.IndexOf Method返回&#34;第一次出现的从零开始的索引&#34;无论你传递什么。

如果您的保留字都是小写,并且您将变量作为小写传递,则任何大于-1的IndexOf都将失败(意味着,您的一个保留字匹配)。

现在,验证您的电子邮件地址已成为一项简单的任务:

public void ValidateEmail(String email)
{
    if (!Reserved(email))
    {
        var ok = System.Text.RegularExpressions.Regex.IsMatch(email, PATTERN);
        if (!ok)
        {
            MessageBox.Show("Failed Email Format");
        }
    } else
    {
        MessageBox.Show("Reserved Word");
    }
}

答案 1 :(得分:0)

namespace emailCheck
{

  public partial class Form1 : Form
  {

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        bool found = false;
        int lenght, index;
        index = 0;
        lenght = listBox1.Items.Count;
        label1.Text = Convert.ToString(listBox1.Items[index]);
        string pattern = null;
        pattern = "^([0-9a-zA-Z]([-\\.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";

        while ((found == false) && ( index < lenght))
        {
            if (Regex.IsMatch(textBox1.Text, Convert.ToString(listBox1.Items[index])))
            {
                found = true;
                MessageBox.Show("Not a valid Email address");
            }
            else
            {
                index++;
            }
        }
        while (found == false)
        {
            if (Regex.IsMatch(textBox1.Text, pattern))
            {
                found = true;
                MessageBox.Show("Valid Email address");
            }
            else
            {
                MessageBox.Show(" Invalid Email address");
            }
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        listBox1.Items.Add(textBox2.Text);
    }

    private void button3_Click(object sender, EventArgs e)
    {
            listBox1.Items.Remove(listBox1.SelectedItem);
    }

    private void label2_Click(object sender, EventArgs e)
    {

    }

  }
}