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

时间:2009-02-26 18:36:38

标签: regex

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

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

3 个答案:

答案 0 :(得分:5)

如果要修改表达式以匹配 完全空字符串完整的URL,则需要使用锚元字符^和$(匹配分别是一行的开头和结尾。

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

正如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

答案 1 :(得分:0)

将整个表达式放在括号中并将其标记为可选(“?”量词,无或一次重复):

((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?)?

答案 2 :(得分:0)

Expr?其中Expr是您的网址匹配器。就像我对httphttpshttps?一样。 ?被称为量词 - 您可以查找它。来自Wikipedia

  

?问号表示前面的元素中有零个或一个。