c# - 如何从 c# (asp.net mvc) 中的文本中提取所有 url

标签 c# asp.net asp.net-mvc regex asp.net-mvc-3

我正在创建一个 asp.net mvc 应用程序,其中有一个文本框,用户可以在其中键入可能包含一些 url 的文本,我想在服务器上解析该文本并提取其中所有可用的 url。

可能的文本

abc.com, xyz.com, http://foo.com
baar.com 
http://baz.com, www.foobar.com
mosso.com
http://subfoo.foo.com
bar.baz.com
foobar.net baaz2.com  morebaaz.com

预期输出数组

abc.com
xyz.com
foo.com 
baar.com
baz.com
foobar.com
mosso.com
subfoo.foo.com
bar.baz.com   
foobar.net 
baaz2.com  
morebaaz.com

最佳答案

这个怎么样:

string[] domains = text.Replace(" ",",").Replace("http://", "").Replace("www.", "").Replace("ftp://", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

然后你可以检查每个字符串的有效 url

public static bool isValidUrl(string url)
{
    string pattern = @"^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$";
    Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
    return reg.IsMatch(url);
}

希望对你有帮助

编辑:抱歉,验证失败..现在修复...

关于c# - 如何从 c# (asp.net mvc) 中的文本中提取所有 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948698/

相关文章:

asp.net-mvc - 默认禁用 ASP.NET MVC 用户帐户

javascript - 将 JavaScript 注入(inject)网站

c# - 如何在这个 .aspx 页面上实现可折叠部分?

c# - 从值列表中推断出下降趋势

c# - 母版页和 jquery 的问题

asp.net - 使用 Javascript 重新居中模态弹出窗口

c# - EF 代码第一个一对多

c# - 使用代码优先 ASP MVC 删除表列

c# - 顺序敏感调用的设计模式

c# - 从网络爬虫中提取内容时,哪些解决方案更快