.... (www.){1}?[a-z0-9\-\_] ....
cosa ci fa qui il '?' ?

.... (.[a-z0-9]+) ....
devi utilizzare il carattere di escape per usare il punto come carattere \.

prova questa
eregi("^(http:// | https://){1}(www\.{1})(\w+)(\.{1}\w{4})$", trim($url))

attento però che devi avere esattamente quattro caratteri finali. forse ti può tornare meglio {2,4}

ps. eregi non fa differenza tra maiuscole e minuscole, non ti serve strtolower