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