这应该得到任何东西(随意添加其他协议):
@"(https?|ftp|file)\://[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*"
Run Code Online (Sandbox Code Playgroud)
真正的困难是找到终点。事实上,此模式依赖于查找无效字符。这可以是域名末尾之前的字母、数字、连字符或句点以外的任何内容,也可以是除正斜杠 (/)、问号 (?)、与号 (&)、等号 (=) 以外的任何内容,分号 (;)、加号 (+)、感叹号 (!)、撇号/单引号 (')、左/右括号、星号 (*)、下划线 (_)、波形符 (~) 或百分号 (%) ) 位于域名之后。
请注意,这将允许无效的 URL,例如
http://../
Run Code Online (Sandbox Code Playgroud)
它会拾取 URL 之后的内容,例如以下字符串:
也许您应该尝试http://www.google.com。
其中"http://www.google.com."(带有尾随句点)将被匹配。
它还会错过不以协议规范开头的 URL(特别是第一组括号内的协议)。例如,它会错过以下字符串中的 URL:
也许您应该尝试 www.google.com。
如果没有更好定义的边界,很难获得每一个案例。
| 归档时间: |
|
| 查看次数: |
8027 次 |
| 最近记录: |