目前使用此:
MatchCollection urlRegExp = Regex.Matches(text, @"https?://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+");
替换文本中的网址,但它并没有得到每个网址,而且似乎我找不到一个好的正则表达式...任何人都可以帮忙吗?
答案 0 :(得分:1)
如果你需要在文本中找到网址,你不需要符合RFC(无论数字)它是完全没用的(并且它几乎不可能使用符合标准的模式,它将太慢,太复杂)。
文本中的所有网址都应被视为有效(和/或在生成此文本的人员插入文本之前必须经过验证。换句话说,这不是您的工作!)< / em>的
所以,你必须找到另一种方法。为此,您必须提出正确的问题:如何区分URL和文本?
让我们列出一般标准
www.
根据这些要求,您可以轻松构建http协议的简单模式:
\b(https?://|www\.)\S+(?=\s|[^\P{P}?]|\z)
请注意,一旦获得结果,您可以使用内置函数检查网址的有效性(但通常不会处理所有情况,但现在您知道原因:)< / em>的