#!/bin/bash

checkURL() {
    # Desc: Checks if string is a valid URL.
    # Warning: Does not correctly handle multi-byte characters.
    # Version: 0.0.2
    # Input: arg1: string
    # Output: return code 0: string is a valid URL
    #         return code 1: string is NOT a valid URL
    # Depends: Bash 5.0.3
    # Ref/Attrib: https://stackoverflow.com/a/3184819
    regex='(https?|ftp|file|ssh|git)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
    arg1="$1";
    if [[ $arg1 =~ $regex ]]; then
	return 0;
    else
	return 1;
    fi;
}

#==BEGIN sample code
testString="https://google.com/security.main.html"
if checkURL "$testString"; then echo "Is a valid URL:$testString"; else echo "Is NOT a valid URL:$testString"; fi;
testString="ssh://username@host.xz/absolute/path/to/repo.git/"
if checkURL "$testString"; then echo "Is a valid URL:$testString"; else echo "Is NOT a valid URL:$testString"; fi;
#==END sample code