validateSubdomain function

Map<String, dynamic> validateSubdomain(
  1. String subdomain
)

Implementation

Map<String, dynamic> validateSubdomain(String subdomain) {
  final parts = subdomain.split('.');

  if (parts.length != 3 || parts[0].length < 2) {
    return {
      'valid': false,
      'message':
          'Invalid subdomain format. Format should follow {subdomain}.{primary-domain}.xrd',
    };
  }

  if (subdomain.contains('_')) {
    return {
      'valid': false,
      'message': 'Special characters are not permitted (except for hyphens).',
    };
  }

  final regex = RegExp(
      r'^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9\-]{1,61}[a-zA-Z0-9]))(\.([a-zA-Z0-9][a-zA-Z0-9\-]{1,61}[a-zA-Z0-9]))*\.xrd$');

  if (!regex.hasMatch(subdomain)) {
    return {
      'valid': false,
      'message': 'Please enter a valid subdomain name format.',
    };
  }

  return {
    'valid': true,
    'message': '',
  };
}