URL正则表达式更新

时间:2013-06-19 15:30:05

标签: c# php

我使用以下表达式进行URL验证。

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$

然而,当我有

"httpcolonforwardslashessite" (colon = : and foward slashes = //)

它仍然将其作为网址传递。如何修改上面的表达式以确保最后有“.com / net”?

谢谢

tldr:我想在网址末尾检查.com或.net。为了达到这个目的,我可以对exp进行哪些更改?

2 个答案:

答案 0 :(得分:4)

你不能使用内置功能,而不是正则表达式吗?

Uri.TryCreate方法可以帮到你。

此方法

    如果Boolean成功创建,
  • 会返回true Uri的值;否则,false
  • 可以使用接受UriKind Enumeration作为参数的重载来检查不同类型的网址,例如Absolute或/和Relative。

答案 1 :(得分:1)

假设你只想要.com,这将有效:

^(https?://)?([\da-z.-]+).([a-z.]{2,6})([/\w .-])/?\.com([/\w \.!"£$%^&\(\)\*])*

或者这个不仅包括.com from here

^(http|https)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$