Posted to tcl by gwlester at Fri Jun 16 20:59:43 GMT 2017view pretty

proc test {srvurl} {
    set validityRE {(?xi)
        ^
        # Path part (already must start with / character)
        (?:	      [-\w.~!$&'()*+,;=:@/]  | %[0-9a-f][0-9a-f] )*
        # Query part (optional, permits ? characters)
        (?: \? (?: [-\w.~!$&'()*+,;=:@/?] | %[0-9a-f][0-9a-f] )* )?
        $
    }
    if {![regexp -- $validityRE $srvurl]} {
        # Provide a better error message in this error case
        if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} {
            puts stdout "Yes!!  That is it!!"
        }
        puts stdout "No, try again. :("
    }
}

test {snafu?%##}