【发布时间】:2012-02-15 06:42:48
【问题描述】:
我已经编写了正则表达式来验证 URL,可能类似于
google.com
www.google.com
http://www.google.com
https://www.google.com
我用过
Regex urlRx = new Regex(@"^(http|ftp|https|www)://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?$", RegexOptions.IgnoreCase);
它适用于 http 和 https。它不适用于 google./com 和 www.google.com。
请帮我解决这个问题。
谢谢
【问题讨论】:
-
这是一个不错的页面,其中比较了解析 url 的不同正则表达式:mathiasbynens.be/demo/url-regex 最好的是:_^(?:(?:https?|ftp)://)(?: \S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{ 1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1, 3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2} )(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2} |2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4] \d|25[0-4]))|(?:(?:[az\x{00a1}-\x{ffff}0-9]+-?)*[az\x{00a1}-\x {ffff}0-9]+)(?:\.(?:[az\x{00a1}-\x{ffff}0-9]+-?)*[az\x{00a1}-\x{ ffff}0-9]+)*(?:\.(?:[az\x{00a1}-\x{ffff}]{
-
我用的是这个(没有ftp)|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(: [0-9]+)?(/.*)?$|i
-
它适用于 www.google.com 吗?
-
请注意,对于简单的情况,这很简单,对于复杂的情况(例如,带有查询字符串或 url 中的特殊字符),这并不简单......