需要C#regexp进行URL验证

dia*_*ora 1 .net c# regex

如何通过单个正则表达式验证URL:

http://83.222.4.42:8880/listen.pls
http://www.my_site.com/listen.pls
http://www.my.site.com/listen.pls
Run Code Online (Sandbox Code Playgroud)

是真实的?

我看到我不完全提出问题:(对不起我的错误.想法是我想在regexp有效网址的帮助下验证,让它成为外部IP地址或域名.这是其他想法.有效的网址可以考虑:

http://93.122.34.342/
http://193.122.34.342/abc/1.html
http://www.my_site.com/listen2.pls
http://www.my.site.com/listen.php
Run Code Online (Sandbox Code Playgroud)

等等.

Jay*_*uzi 7

通往地狱的道路铺设了字符串解析.

URL解析尤其是许多被利用的安全问题的根源.不要这样做.

例如,你想要匹配吗?

    

请注意大写方案部分.请记住,URL的某些部分区分大小写,而有些则不区分大小写.然后是编码规则.等等.

首先使用System.Uri解析您提供的URL:

var uri = new Uri("http://83.222.4.42:8880/listen.pls");
Run Code Online (Sandbox Code Playgroud)

然后你可以写下这样的东西:

if (uri.Scheme == "http" &&
    uri.Host == "83.222.4.42" &&
    uri.AbsolutePath == "/listen.pls"
    )
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)