一个验证Web地址并匹配空字符串的正则表达式?

Pet*_*ris 3 regex

当前表达式验证Web地址(HTTP),如何更改它以使空字符串也匹配?

(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
Run Code Online (Sandbox Code Playgroud)

Ale*_*ett 5

如果你想修改表达式匹配要么完全空字符串或者一个完整的URL,你需要使用锚元字符^和$(分别匹配行的开头和结尾其中).

^(|https?:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)$
Run Code Online (Sandbox Code Playgroud)

正如Dirkgently指出的那样,你可以稍微简化你的协议匹配,所以我也把它包括在内.

但是,如果您在程序或脚本中使用此表达式,则使用语言自己检查输入是否为空可能更简单.

// in no particular language...
if input.length > 0 then
    if input matches <regex> then
        input is a URL
    else
        input is invalid
else
    input is empty
Run Code Online (Sandbox Code Playgroud)