Public/Get-ExchangeOnPremisesFQDN.ps1

function Get-ExchangeOnPremisesFQDN {
    # RFC 1123 hostname: labels of 1-63 chars separated by dots, no scheme or path allowed
    $local:HostnamePattern = '^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$'
    While ($true) {
        $local:input = (Read-Host -Prompt 'Enter Exchange On-Premises endpoint, e.g. exchange1.contoso.com').Trim()
        If( [string]::IsNullOrEmpty( $local:input)) {
            return
        }
        If( $local:input -match $local:HostnamePattern) {
            $script:myOffice365Services['ExchangeOnPremisesFQDN'] = $local:input
            return
        }
        Write-Warning ('Invalid hostname "{0}". Enter a valid FQDN (e.g. exchange1.contoso.com) or leave empty to cancel.' -f $local:input)
    }
}