当前表达式验证Web地址(HTTP),如何更改它以使空字符串也匹配?
(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
答案 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\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)?
答案 2 :(得分:0)
Expr?
其中Expr
是您的网址匹配器。就像我对http
和https
:https?
一样。 ?
被称为量词 - 您可以查找它。来自Wikipedia:
?问号表示前面的元素中有零个或一个。