Проверка ввода текстового поля в C # - PullRequest
2 голосов
/ 17 июня 2011

Как проверить текстовое поле номера мобильного телефона и текстовое поле электронной почты с помощью регулярных выражений в C #?

Я хочу сначала проверить их в самом внешнем интерфейсе, чтобы база данных не получала неверный ввод или, скорее, дажепроверяет это.

Я использую Windows Forms.

Ответы [ 8 ]

5 голосов
/ 17 июня 2011

Вы можете использовать System.Text.RegularExpression

Я приведу пример проверки электронной почты.

затем объявите регулярное выражение типа

Regex myRegularExpression = new 
                            Regex(" \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b");

и скажите, что ваше текстовое поле электронной почты txtEmail

затем напишите,

   if(myRegularExpression.isMatch(txtEmail.Text))
   {
        //valid e-mail
   }

Обновление

Не эксперт по регулярным выражениям,

Вот ссылка на Регулярное выражение для проверки электронной почты

Более подробную информацию о regEx вы можете найти по предоставленной ссылке.

3 голосов
/ 10 ноября 2011
//for email validation    
System.Text.RegularExpressions.Regex rEMail = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z][\w\.-]{2,28}[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$");

if (txt_email.Text.Length > 0)
{
    if (!rEMail.IsMatch(txt_email.Text))
    {
        MessageBox.Show("E-Mail expected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        txt_email.SelectAll();
        e.Cancel = true;
    }
}

//for mobile validation    
Regex re = new Regex("^9[0-9]{9}");

if (re.IsMatch(txt_mobile.Text.Trim()) == false || txt_mobile.Text.Length > 10)
{
    MessageBox.Show("Invalid Indian Mobile Number !!");
    txt_mobile.Focus();
}
2 голосов
/ 17 июня 2011

Этот код проверит, действителен ли адрес электронной почты:

string inputText = textBox1.Text;

if (Regex.IsMatch(inputText, 
                  @"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" + 
                  @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$"))
{
  MessageBox.Show("yes");
}
else
{
  MessageBox.Show("no");
}

(источник: http://msdn.microsoft.com/en-us/library/01escwtf.aspx)

Для телефонных номеров это не так просто: ответ зависит от того, где вы находитесь, хотите ли вы разрешить использование международных номеров, как пронумерованы мобильные телефоны (например, в США вы не можете определить, номер телефона, будь то номер мобильного телефона или нет). Посмотрите "План нумерации телефонов" в Википедии для получения дополнительной информации.

1 голос
/ 19 марта 2012

Я выполняю числовую проверку таким образом, как показано в коде ниже.

Нет необходимости проверять char по char, уважается культура пользователя!

namespace Your_App_Namespace
{
public static class Globals
{
    public static double safeval = 0; // variable to save former value!

    public static bool isPositiveNumeric(string strval, System.Globalization.NumberStyles NumberStyle)
    // checking if string strval contains positive number in USER CULTURE NUMBER FORMAT!
    {
        double result;
        boolean test;
        if (strval.Contains("-")) test = false;
        else test = Double.TryParse(strval, NumberStyle, System.Globalization.CultureInfo.CurrentCulture, out result);
        // if (test == false) MessageBox.Show("Not positive number!");
        return test;
    }

    public static string numstr2string(string strval, string nofdec)
    // conversion from numeric string into string in USER CULTURE NUMBER FORMAT!
    // call example numstr2string("12.3456", "0.00") returns "12.34"
    {
        string retstr = "";
        if (Globals.isPositiveNumeric(strval, System.Globalization.NumberStyles.Number)) retstr = double.Parse(strval).ToString(nofdec);
        else retstr = Globals.safeval.ToString(nofdec);
        return retstr;
    }

    public static string number2string(double numval, string nofdec)
    // conversion from numeric value into string in USER CULTURE NUMBER FORMAT!
    // call example number2string(12.3456, "0.00") returns "12.34"
    {
        string retstr = "";
        if (Globals.isPositiveNumeric(numval.ToString(), System.Globalization.NumberStyles.Number)) retstr = numval.ToString(nofdec);
        else retstr = Globals.safeval.ToString(nofdec);
        return retstr;
    }
}

// Other Your_App_Namespace content

}

// This the way how to use those functions in any of your app pages

    // function to call when TextBox GotFocus

    private void textbox_clear(object sender, System.Windows.RoutedEventArgs e)
    {
        TextBox txtbox = e.OriginalSource as TextBox;
        // save original value
        Globals.safeval = double.Parse(txtbox.Text);
        txtbox.Text = "";
    }

    // function to call when TextBox LostFocus

    private void textbox_change(object sender, System.Windows.RoutedEventArgs e)
    {
        TextBox txtbox = e.OriginalSource as TextBox;
        // text from textbox into sting with checking and string format
        txtbox.Text = Globals.numstr2string(txtbox.Text, "0.00");
    }
1 голос
/ 17 июня 2011

См. Проверка адреса электронной почты с использованием регулярных выражений ( Проект кода ) для проверки электронной почты и см. Рекомендации по анализу и проверкеномер мобильного телефона (переполнение стека) для проверки номера мобильного телефона.

1 голос
/ 17 июня 2011

В ASP.NET вы можете использовать RegularExpressionValidator элемент управления.

Чтобы определить само регулярное выражение, вы можете поэкспериментировать с таким инструментом, как Expresso .

Имейте в виду, что проверка электронной почты с помощью регулярных выражений является сложной задачей, если вы хотите разрешить все возможные допустимые форматы электронной почты; Вероятно, в этом случае лучше всего отправить электронное письмо на введенный адрес со ссылкой для подтверждения, и при щелчке по этой ссылке вы предполагаете, что письмо действительно.

0 голосов
/ 17 сентября 2013

Для проверки номера телефона используйте следующий код в PreviewTextInput события Textbox.

private void PhoneNumbeTextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    e.Handled = !AreAllValidNumericChars(e.Text);       
}


private bool AreAllValidNumericChars(string str)
{
    bool ret = true;
    if (str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeSign |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeInfinitySymbol |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentDecimalSeparator |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentGroupSeparator |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.PerMilleSymbol |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveInfinitySymbol |
            str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveSign)
            return ret;

    int l = str.Length;
    for (int i = 0; i < l; i++)
    {
        char ch = str[i];
        ret &= Char.IsDigit(ch);
    }

    return ret;
}
0 голосов
/ 17 сентября 2013

Для проверки электронной почты используйте следующее выражение Regex, как показано ниже в событии Lost Focus текстового поля.

Использовать System.Text.RegularExpression Пространство имен для Regex.

Regex emailExpression = new Regex(@"^[a-zA-Z][\w\.-]{2,28}[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$");

, а затем проверьте его с помощью кода ниже

if (emailExpression.IsMatch(textbox.Text))
{
    //Valid E-mail
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...