【发布时间】:2013-12-21 02:44:50
【问题描述】:
我正在编写一个应该匹配这种类型的 URL 的正则表达式
http(s)://a.b.c.domain.company.com(:8000)
协议可以是http和https,端口是可选的
我已经写好了
$reg = "^(http|https)(\://)([a-zA-Z0-9\-\.]){6,}(\:[0-9]*)?\/?"
$url1 = "http://uat.upm.goal.services.ps.com"
$url2 = "http://uat.upm.goal.services.ps.com:9000/"
$url3 = "http://uat.upm.goal.services.ps.com:9000?name=foo"
$flag1 = $url1 -Match $reg
$flag2 = $url2 -Match $reg
$flag3 = $url3 -Match $reg
echo $flag1
echo $flag2
echo $flag3
我希望 $url1 和 $url2 匹配正则表达式...但是 $url3 应该匹配失败(因为它包含命令)。我希望 URL 以 .com 或 .com:8000 或 .com:8000/ 结尾。
在(可选的)端口和 / 之后我不想要任何东西。
【问题讨论】:
-
为什么最后是
^? -
我正在尝试强制检查 URL 是否以 .com 或 .com:8000 或 .com:8000/ 结尾,但您不能说 .com:8000/?cmd=foo
-
为什么限制为
{6}?我以为你想通过.com匹配。另外,我认为您需要转义正斜杠。
标签: regex