The following regex will validate the top-level domain and whether it has http(s):// or not:
^(http(s)*://)*[a-z0-9.-]+$
Plug it to regexp_like and you get:
with urls as (
select 'www.oracle.com' u from dual union all
select 'http://www.oracle.com' u from dual union all
select 'https://www.oracle.com' u from dual union all
select 'https://www.oracle-here.com' u from dual union all
select 'https://www.####.com' u from dual union all
select 'not an URL' u from dual union all
select 'http://' u from dual
)
select * from urls
where regexp_like(u, '^(http(s)*://)*[a-z0-9.-]+$');
U
---------------------------
www.oracle.com
http://www.oracle.com
https://www.oracle.com
https://www.oracle-here.com
But this is basic. It only checks the top-level domain. Checking that a string is a valid URL is complicated:
http://stackoverflow.com/a/190405/1485955 Unless there's a pressing need to ensure that these are real URLs, writing a regular expression is probably more hassle than it's worth.