isReasonablyValidArabicRegionPhone function
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());
}