Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用列表框项目检查电子邮件地址_C#_String_Email_Listbox - Fatal编程技术网

C# 使用列表框项目检查电子邮件地址

C# 使用列表框项目检查电子邮件地址,c#,string,email,listbox,C#,String,Email,Listbox,这是一个家庭作业问题,但我真的被卡住了,非常感谢你的帮助。我相信这是一个小东西可以解决它。Q使用正则表达式,编写一个程序,输入建议的电子邮件地址,并报告是否接受。必须是那种形式someone@someaddress.co.za. 然而,有一个扭曲,允许用户在列表框中输入特殊单词,如webmaster、goverment,如果电子邮件地址包含其中一个单词,该列表框也会拒绝该电子邮件地址。现在,我尝试了以下方法,但即使列表框中没有任何内容,它也会给我“无效电子邮件”。第一个if语句非常有效。。我的问

这是一个家庭作业问题,但我真的被卡住了,非常感谢你的帮助。我相信这是一个小东西可以解决它。Q使用正则表达式,编写一个程序,输入建议的电子邮件地址,并报告是否接受。必须是那种形式someone@someaddress.co.za. 然而,有一个扭曲,允许用户在列表框中输入特殊单词,如webmaster、goverment,如果电子邮件地址包含其中一个单词,该列表框也会拒绝该电子邮件地址。现在,我尝试了以下方法,但即使列表框中没有任何内容,它也会给我“无效电子邮件”。第一个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);

    }
}
}

命名空间电子邮件检查
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
bool-found=false;
整数长度,索引;
指数=0;
lenght=listBox1.Items.Count;
label1.Text=Convert.ToString(listBox1.Items[index]);
字符串模式=空;
pattern=“^([0-9a-zA-Z]([-\\\.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\)+[a-zA-Z]{2,9})$;
而((发现==false)和&(索引<长度))
{
if(Regex.IsMatch(textBox1.Text,Convert.ToString(listBox1.Items[index]))
{
发现=真;
MessageBox.Show(“不是有效的电子邮件地址”);
}
其他的
{
索引++;
}
}
while(find==false)
{
if(Regex.IsMatch(textBox1.Text,pattern))
{
发现=真;
MessageBox.Show(“有效电子邮件地址”);
}
其他的
{
MessageBox.Show(“无效电子邮件地址”);
}
}
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
listBox1.Items.Add(textBox2.Text);
}
私有无效按钮3\u单击(对象发送者,事件参数e)
{
listBox1.Items.Remove(listBox1.SelectedItem);
}
私有无效标签2_单击(对象发送方,事件参数e)
{
}
}
}

首先,我会在你的班级顶端定义你的电子邮件地址模式和保留字列表:

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

可能会列出一个不允许的单词列表,当你按下按钮时,让它检查列表中的一个单词是否是输入字符串?嗯,我现在已经列出了另一个列表,由listbox1填充,并将新列表作为参数来检查输入字符串,但没有运气,除非我做错了,否则用新的代码var myOtherList=listBox1.Items.Cast().ToList()更新你的问题;如果(Regex.IsMatch(textBox1.Text,Convert.ToString(myOtherList)){MessageBox.Show(“不是有效的电子邮件地址”);}Jpcode,您能解释一下代码的linq部分吗?我以前从未见过这样的事。感谢您的精心翻译,“索引(email_小写)大于-1的任何元素(x)”。如果没有匹配项,则该方法返回
-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;
}
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");
    }
}