我有一个用户输入,用于提供网站地址。显然,大多数用户不知道什么是格式良好的URL,因此我需要一个符合以下规则的网站地址Regex:
1) www.someaddress.com - True
2) someaddress.com - True
3) http://someaddress.com - True
4) https://someaddress.com - True
5) https://www.someaddress.co.il - True
6) http://www.someaddress.com - True
我使用这个Regex:
[RegularExpression(@"^((http|ftp|https|www)://)?([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?$", ErrorMessage = "Not a valid website address")]
public string SiteUrl { get; set; }
但这是无用的,因为它允许几乎任何字符串通过。
请提供一个数据注释答案,而不是诸如以下内容的答案:
Uri.IsWellFormedUriString
因为 .net 不支持自定义属性的客户端验证。
www
是错误的。它会接受www://google.com
。除此之外,这是一个非常好的正则表达式。 - André Silvaweb+burger:
),但这确实有些可疑。 - Gabriel LuciUrl
数据注释,但它包含了http
部分,对于正则表达式和源代码链接的加一赞 :) - Offir