, Он содержит много выражений, но я думаю, что одно из двух лучших выражений на сайте должно подойти вам.

есно, как лучше разбирать и проверять номер мобильного телефона перед отправкой текста? У меня есть код, который работает, но я хотел бы найти лучшие способы сделать это (как мой последний вопрос, это часть моего раннего новогоднего решения написать код лучшего качества!).

В настоящее время мы очень прощаем, когда пользователь вводит число в форму, они могут вводить такие вещи, как "+44 123 4567890", "00441234567890", "0123456789", "+44 (0) 123456789", "012-345 -6789 "или даже" не получил телефон ".

Однако для отправки текста формат должен быть 44ххххххххх (это только для мобильных телефонов в Великобритании), поэтому нам нужно проанализировать его и проверить его перед отправкой. Ниже приведен код, который у меня есть на данный момент (C #, asp.net), было бы замечательно, если бы у кого-нибудь были идеи о том, как его улучшить.

Спасибо,

Аннели

private bool IsMobileNumberValid(string mobileNumber)
    {
        // parse the number
        _mobileNumber = ParsedMobileNumber(mobileNumber);

        // check if it's the right length
        if (_mobileNumber.Length != 12)
        {
            return false;
        }

        // check if it contains non-numeric characters
        if(!Regex.IsMatch(_mobileNumber, @"^[-+]?[0-9]*\.?[0-9]+$"))
        {
            return false;
        }

        return true;
    }

    private string ParsedMobileNumber(string number)
    {
        number = number.Replace("+", "");
        number = number.Replace(".", "");
        number = number.Replace(" ", "");
        number = number.Replace("-", "");
        number = number.Replace("/", "");
        number = number.Replace("(", "");
        number = number.Replace(")", "");

        number = number.Trim(new char[] { '0' });

        if (!number.StartsWith("44"))
        {
            number = "44" + number;
        }

        return number;
    }

РЕДАКТИРОВАТЬ

Вот чем я закончил:

private bool IsMobileNumberValid(string mobileNumber)
    {
        // remove all non-numeric characters
        _mobileNumber = CleanNumber(mobileNumber);

        // trim any leading zeros
        _mobileNumber = _mobileNumber.TrimStart(new char[] { '0' });

        // check for this in case they've entered 44 (0)xxxxxxxxx or similar
        if (_mobileNumber.StartsWith("440"))
        {
            _mobileNumber = _mobileNumber.Remove(2, 1);
        }

        // add country code if they haven't entered it
        if (!_mobileNumber.StartsWith("44"))
        {
            _mobileNumber = "44" + _mobileNumber;
        }

        // check if it's the right length
        if (_mobileNumber.Length != 12)
        {
            return false;
        }

        return true;
    }

    private string CleanNumber(string phone)
    {
        Regex digitsOnly = new Regex(@"[^\d]");
        return digitsOnly.Replace(phone, "");
    }

Ответы на вопрос(0)

Ваш ответ на вопрос