这是一个家庭作业问题,但我真的被困住了,非常感谢你的帮助。它确实很小,可以修复它。 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);
}
}
}
答案 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)
{
}
}
}