Prática recomendada para analisar e validar número de celular

Gostaria de saber qual é a melhor prática para analisar e validar um número de celular antes de enviar um texto. Eu tenho um código que funciona, mas eu gostaria de descobrir maneiras melhores de fazê-lo (como minha última pergunta, isso faz parte da minha resolução de início de ano novo para escrever um código de melhor qualidade!).

No momento, perdoamos muito quando o usuário digita o número no formulário, ele pode inserir coisas como "+44 123 4567890", "00441234567890", "0123456789", "+44 (0) 123456789", "012-345 -6789 "ou mesmo" não tenho telefone ".

No entanto, para enviar o texto, o formato deve ser 44xxxxxxxxxx (isso é apenas para celulares do Reino Unido), portanto, precisamos analisá-lo e validá-lo antes de podermos enviar. Abaixo está o código que tenho por enquanto (C #, asp.net), seria ótimo se alguém tivesse alguma idéia de como melhorá-lo.

Obrigado,

Annelie

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

EDITAR

Aqui está o que eu acabei com:

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

questionAnswers(4)

yourAnswerToTheQuestion