isFQDN method
Check if the string str
is a fully qualified domain name (e.g., domain.com).
requireTld
sets if TLD is requiredallowUnderscores
sets if underscores are allowed
Implementation
bool isFQDN(
String str, {
bool requireTld = true,
bool allowUnderscores = false,
}) {
final List<String> parts = str.split('.');
if (requireTld) {
final String tld = parts.removeLast();
if (parts.isEmpty || !RegExp(r'^[a-z]{2,}$').hasMatch(tld)) {
return false;
}
}
final String partPattern = allowUnderscores
? r'^[a-z\u00a1-\uffff0-9-_]+$'
: r'^[a-z\u00a1-\uffff0-9-]+$';
for (final String part in parts) {
if (!RegExp(partPattern).hasMatch(part)) {
return false;
}
if (part[0] == '-' ||
part[part.length - 1] == '-' ||
part.contains('---') ||
(allowUnderscores && part.contains('__'))) {
return false;
}
}
return true;
}