As an alternative, the script below will capture forbidden urls inside messages without the need to specify possile variations of the protocoll for each. It's the best method using $read for this task I can think of atm, though there may be a bether one, and $read isn't the best choice for this kind of matching at all. As long as you don't have an excessivly long list of urls, it may be sufficient.

Put all forbidden "urls" inside a textfile named "forbiddenurls.txt" located in your mirc main directory, each on a separate line.
DON'T add the protocol like http:// or host (www.) there, start at the domain part. You may use wildcards.
Examples:
for "www.google.com" add: google.com
for "https://forums.mirc.com" add: forums.mirc.com

The script will check all words that contain either the protocol "http://", "https://" "ftp://", or "www.". If any line in the textfile matches the text following the protocol, it will issue the kickban.

Example:
If you have e.g. in the textfile the line: test123.com
It will ban for messages:
"www.test123.com"
"Gratis testing? >http://www.test123.com<"
"check out http://test123.com/tests/something"

It won't ban for:
"www.anothertest123.com"
"I really like test123.com"


Code:
on @*:text:*:#YOURCHAN: { urlcheck $1- }
on @*:action:*:#YOURCHAN: { urlcheck $1- }

alias -l urlcheck {
  noop $regex($strip($1-),/(?:(?:http|https|ftp):\/\/|www\.)(?:www\.)?(\S+)/gi) 
  var %a = 1
  while ($regml(%a)) {
    var %b = 1
    while ($read(forbiddenurls.txt,%b)) {
      if ($+($v1,*) iswm $regml(%a)) {
        ban -k $chan $nick 1 No advertising!
        return
      }
      inc %b
    }
    inc %a
  }
}

(the regex is far from perfect, but it should work)