isReasonablyValidArabicRegionPhone function

bool isReasonablyValidArabicRegionPhone(
  1. String phone,
  2. String regionCode, {
  3. bool validator(
    1. String digits
    )?,
})

Returns true if phone looks like a valid number for regionCode (e.g. SA, EG). Uses a simple length and digit check; for strict E.164 or national format use a dedicated library (e.g. libphonenumber) or pass a custom validator.

Implementation

bool isReasonablyValidArabicRegionPhone(
  String phone,
  String regionCode, {
  bool Function(String digits)? validator,
}) {
  final digits = phone.replaceAll(RegExp(r'[\s\-\.\(\)]'), '');
  if (digits.isEmpty) return false;
  if (!RegExp(r'^\+?[0-9]+$').hasMatch(digits)) return false;
  if (validator != null) return validator(digits);
  final len = digits.length;
  if (digits.startsWith('+')) {
    if (len < 10 || len > 15) return false;
  } else {
    if (len < 8 || len > 12) return false;
  }
  return kArabicPhoneRegionCodes.contains(regionCode.toUpperCase());
}