如果你想修改表达式匹配要么完全空字符串或者一个完整的URL,你需要使用锚元字符^和$(分别匹配行的开头和结尾其中).
^(|https?:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)$
正如Dirkgently指出的那样,你可以稍微简化你的协议匹配,所以我也把它包括在内.
但是,如果您在程序或脚本中使用此表达式,则使用语言自己检查输入是否为空可能更简单.
// in no particular language... if input.length > 0 then if input matchesthen input is a URL else input is invalid else input is empty