import re DOMAIN_NAME_REGEX = r'^[a-zA-Z0-9._-]+$' # could be a FQDN, but also just a name def validate_and_split_path_and_domain_name(path_or_dn: str) -> list[str] | None: """ Splits a string along slashes and validates each fragment. Args: path_or_dn: Input string that may contain slashes (Some path, name, FQDN or a combination of them) Returns: List of validated fragments in original order, or None if validation fails """ import re # Split the input by slashes fragments = [frag for frag in path_or_dn.strip().split('/')] # Validate each fragment contains only allowed characters validated_fragments = [] for frag in fragments: if not re.match(DOMAIN_NAME_REGEX, frag): return None validated_fragments.append(frag) # Return the list of validated fragments or None if any failed validation # NOTE: validated_fragments could be falsy if input was empty or only slashes return validated_fragments if validated_fragments else None