isFQDN function

bool isFQDN(
  1. String str, [
  2. Map<String, Object>? options
])

check if the string is a fully qualified domain name (e.g. domain.com).

options is a Map which defaults to { 'require_tld': true, 'allow_underscores': false }.

Implementation

bool isFQDN(String str, [Map<String, Object>? options]) {
  final defaultFqdnOptions = {'require_tld': true, 'allow_underscores': false};

  options = merge(options, defaultFqdnOptions);
  final parts = str.split('.');
  if (options['require_tld'] as bool) {
    var tld = parts.removeLast();
    if (parts.isEmpty || !RegExp(r'^[a-z]{2,}$').hasMatch(tld)) {
      return false;
    }
  }

  for (final part in parts) {
    if (options['allow_underscores'] as bool) {
      if (part.contains('__')) {
        return false;
      }
    }
    if (!RegExp(r'^[a-z\\u00a1-\\uffff0-9-]+$').hasMatch(part)) {
      return false;
    }
    if (part[0] == '-' ||
        part[part.length - 1] == '-' ||
        part.contains('---')) {
      return false;
    }
  }
  return true;
}