Подтвердить номер телефона

Я создаю программу на C#. Что я хочу сделать, «Когда я нажимаю на поиск, если текстовое поле 1 и текстовое поле 2 содержат только числа, отображаются результаты поиска».

Как сказать «если содержит 0–9»?

Мой нынешний метод не работает. Я пробовал Contains, но хочу, чтобы он включал все числа.

protected void Button1_Click(object sender, EventArgs e)
{
    if (TextBox1.Text != "0-9" && TextBox2.Text != "0-9")  
    {
        GridView1.Visible = true;
    }

    else  
    {
        Label3.Text = "Insert phone and id correctly:" ;
    }
}

Вы можете попытаться преобразовать как int, если это правда, тогда телефон правильный, иначе неправильный. Или вы проверяете, содержит ли значение

Md. Abdul Alim 31.10.2018 12:49

@ Md.AbdulAlim Телефонный "номер" может быть слишком большим для int.

Andrew Morton 31.10.2018 12:49

Вы ищете Регулярное выражение Например. stackoverflow.com/questions/16373895/…

Alex K. 31.10.2018 12:49

То, что может иметь значащие ведущие нули, на самом деле не является числом и никогда не должно рассматриваться как таковое.

Alex K. 31.10.2018 12:51

Кто проголосовал за открытие и почему? Есть масса возможных дубликатов. Если вы не согласны, предложите другие, и я их добавлю. Это определенно не уникальный вопрос.

CodeCaster 31.10.2018 12:54
0
5
198
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете Regex как вариант. Что-то вроде этого должно работать:

Regex pattern = new Regex(@"\+[0-9]{3}\s+[0-9]{3}\s+[0-9]{5}\s+[0-9]{3}");

if (pattern.IsMatch(TextBox1.Text))
{
     GridView1.Visible = true;
}
else  
{
   Label3.Text = "Insert phone and id correctly:" ;
}

В соответствии с вашими требованиями вы можете изменить это так, чтобы оно соответствовало вашим потребностям. Например, это еще один Regex:

@"^(\+[0-9]{9})$"

В качестве другого решения вы также можете использовать LINQ:

if (textBox1.Text.All(char.IsDigit))
{
    GridView1.Visible = true;
}

Только не забудьте добавить их к своим операторам using:

using System.Text.RegularExpressions;
using System.Linq;

Int32 не может содержать телефонные номера из 12 цифр (игнорируя 00 в префиксе страны), и это регулярное выражение странно специфично.

CodeCaster 31.10.2018 12:59

@CodeCaster Проверьте мой обновленный ответ. Да, это специфично, и, конечно, ОП может изменить это в соответствии со своими требованиями.

Salah Akbari 31.10.2018 13:02

Другие вопросы по теме