2016-09-17 6 views
2

это домашнее задание Вопрос, но я действительно застрял и буду благодарен за вашу помощь. Это что-то маленькое, что исправить это, я уверен. Q использует регулярное выражение, записывает программу, в которую вводится предложенный адрес электронной почты, и отчеты о том, принимается ли оно. Должен быть в форме [email protected] Однако есть поворот, позволяющий пользователю вводить специальные слова, такие как веб-мастер, правительство в списке, которое также отклонит адрес электронной почты, если оно содержит одно из этих слов. Теперь я пробовал следующее, но он дает мне «Недействительный адрес электронной почты», даже если в списке нет ничего. первое утверждение 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

Возможно сделать список слов не допускается, и при нажатии на кнопку, добейтесь ее проверить, если одно из слов из список - это строка ввода? – Werdna

+0

Хм, теперь я сделал еще один список, который заполняется списком1, и у него был новый список в качестве параметра для проверки на входную строку, но не повезло, если только я не ошибаюсь – Almendro

+0

Обновите свой вопрос с помощью нового кода – Werdna

ответ

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

Enumerable.Any Method возвращает логическое значение Истина, если какой-либо один элемент в коллекции (обозначенном x выше) совпадает с нижеследующий состояние -1 < x.IndexOf(lc)).

The String.IndexOf Method возвращает «с нуля индекс первого вхождения» того, что вы пройти в.

Если зарезервированные слова в нижнем регистре и вы передаете переменную в нижнем регистре, любой IndexOf что больше -1 будет ошибкой (что означает, что одно из ваших зарезервированных слов соответствует).

Теперь, подтверждающей ваш адрес электронной почты становится простой задачей:

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

Jpcode, не могли бы вы объяснить свою линусную часть кода, пожалуйста? Раньше я никогда не видел ничего подобного. Спасибо mate – Werdna

+0

Грубо переведенный «любой элемент (x), где IndexOf (email_lowerCase) больше, чем -1». Метод [String.IndexOf] (https://msdn.microsoft.com/en-us/library/system.string.indexof.aspx) возвращает '-1', если нет совпадения. Таким образом, вы хотите узнать, соответствует ли элемент [Linq.Any] (https://msdn.microsoft.com/en-us/library/bb534972.aspx) в элементе электронной почты (нижний регистр), который вы передаете. – jp2code

+0

Спасибо за объясняя это :) – Werdna

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) 
    { 

    } 

    } 
} 
Смежные вопросы