private static string PreValidateHandling(string input, TelephoneOptions options) { if (options == null) { options = TelephoneOptions.Default; } input = TelephoneUtility.PreProcessingHandling(input, options); return(input); }
/// <summary> /// Validate a phone number in length and signature of against an inbound (local) phone number rules /// </summary> /// <param name="phoneNumber"></param> /// <param name="options"></param> /// <returns></returns> public static bool PhoneNumberInboundValidation(string phoneNumber, TelephoneOptions options = null) { phoneNumber = PreValidateHandling(phoneNumber, options); if (phoneNumber.StartsWith("0") || phoneNumber.StartsWith("+")) { return(false); } return(PhoneNumberValidateLength(phoneNumber, options) && PhoneNumberValidateFormat(phoneNumber, options)); }
/// <summary> /// Validate a phone number in length and signature of against an city phone number rules /// </summary> /// <param name="phoneNumber"></param> /// <param name="options"></param> /// <returns></returns> public static bool PhoneNumberCityValidation(string phoneNumber, TelephoneOptions options = null) { phoneNumber = PreValidateHandling(phoneNumber, options); if (phoneNumber.Length < 2 || phoneNumber[0] != '0' || phoneNumber[1] == '0') { return(false); } return(PhoneNumberValidateLength(phoneNumber, options) && PhoneNumberValidateFormat(phoneNumber, options)); }
/// <summary> /// Validates only the total length of the phone number /// </summary> /// <param name="phoneNumber"></param> /// <param name="options"></param> /// <returns></returns> public static bool PhoneNumberValidateLength(string phoneNumber, TelephoneOptions options = null) { phoneNumber = PreValidateHandling(phoneNumber, options); var normalized = TelephoneNormalizer.ToPhoneNumberNormalization(phoneNumber, options); if (normalized.Length < MinimumPhoneNumberLength || normalized.Length > MaximumPhoneNumberLength) { return(false); } return(true); }
internal static string PreProcessingHandling(string input, TelephoneOptions options) { if (options == null) { options = TelephoneOptions.Default; } if (!options.ProcessNaturalCharacterOnly) { input = ToNaturalCharset(input); // Stop this process from occured again on nested validations options.ProcessNaturalCharacterOnly = true; } return(input); }
/// <summary> /// Validations only the signatures of the phone number /// </summary> /// <param name="phoneNumber"></param> /// <param name="options"></param> /// <returns></returns> public static bool PhoneNumberValidateFormat(string phoneNumber, TelephoneOptions options = null) { phoneNumber = PreValidateHandling(phoneNumber, options); if (!TelephoneUtility.CheckOpenCloseCharacter(phoneNumber, new List <OpenClose> { new OpenClose('(', ')'), new OpenClose('[', ']') })) { return(false); } if (RegexPhoneNumberBelow3Digit.IsMatch(phoneNumber)) { return(true); } return(RegexPhoneNumber.IsMatch(phoneNumber)); }
/// <summary> /// Validates phone number in length and signatures regardless that if the phone number is local, city or international number /// </summary> /// <param name="phoneNumber"></param> /// <param name="options"></param> /// <returns></returns> public static bool PhoneNumberValidate(string phoneNumber, TelephoneOptions options = null) { phoneNumber = PreValidateHandling(phoneNumber, options); return(PhoneNumberValidateFormat(phoneNumber, options) && PhoneNumberValidateLength(phoneNumber, options)); }
public static string ToPhoneNumberNormalization(string phoneNumber, TelephoneOptions options = null, string defaultI18nStart = "+") { phoneNumber = PreNormalizationHandling(phoneNumber, options); if (defaultI18nStart != "+" && defaultI18nStart != "00") { throw new ArgumentOutOfRangeException(nameof(defaultI18nStart), defaultI18nStart, "parameter can only contains value of '+' or '00'"); } if (phoneNumber == null) { return(null); } var digitOnly = DigitOnlyRegex.Replace(phoneNumber, "").Trim(); // var digitOnly = Regex.Replace(phoneNumber, @"[^\d]", "").Trim(); // TODO: Performance Monitor #region Exceptional Normalizer if (IsExceptionalPhoneNumber(out var exception, phoneNumber)) { if (exception.CustomNormalizer != null) { return(exception.CustomNormalizer(phoneNumber)); } #region International Prefix if (phoneNumber.Trim().StartsWith("+")) { return((defaultI18nStart == "+" ? "+" : exception.InternationalPrefixes[0]) + digitOnly); } foreach (var intPrefix in exception.InternationalPrefixes) { if (digitOnly.StartsWith(intPrefix)) { if (digitOnly.Length > intPrefix.Length) { return((defaultI18nStart == "+" ? "+" : intPrefix) + digitOnly.Substring(intPrefix.Length)); } } } #endregion International Prefix return(digitOnly); // National Prefix & No Prefix } #endregion Exceptional Normalizer #region Default Normalizer (ITU-T Recommendation) if (phoneNumber.Trim().StartsWith("+")) { return(defaultI18nStart + digitOnly); } if (digitOnly.StartsWith("00")) { if (digitOnly.Length > 2) { return(defaultI18nStart + digitOnly.Substring(2)); } return(defaultI18nStart); } #endregion Default Normalizer (ITU-T Recommendation) //Other 09132198895, 5553254 return(digitOnly); // National Prefix & No Prefix }