字符串以解析出URL

本文关键字:URL 字符串 | 更新日期: 2023-09-27 18:20:52

从"JavaScript:thegoodparts"(第66页)获得此正则表达式字符串。无法使其工作。有人能看到它出了什么问题吗?

/^(?:([A-Za-z]+):)?('/{0,3})([0-9.'-A-Za-z]+)(?::('d+))?(?:'/([^?#]*))?(?:'?([^#]*))?(?:#(.*))?$/

它应该分成这样一个字符串:

https://stackoverflow.com/questions/ask

组成部分:scheme,slash,host,port,path,query,hash

顺便说一句:这个正则表达式需要是通用的。。。它将用于不同的"方案"

字符串以解析出URL

也许这不是您的目标,但为什么不使用System.Uri类呢?

它有你想要的,它解析原始URI/URL。

http://msdn.microsoft.com/en-us/library/system.uri.aspx

您的问题用c#标记,那么为什么不直接使用System.Uri类呢?

例如

string s = "http://stackoverflow.com/questions/ask";
Uri uri = new System.Uri(s);
string scheme = uri.Scheme;
string host = uri.DnsSafeHost;
// etc

如果这是在Javascript中,请尝试

result = subject.match(/'b(https?|ftp):'/'/(['-A-Z0-9.]+)('/['-A-Z0-9+&@#'/%=~_|!:,.;]*)?('?[A-Z0-9+&@#'/%=~_|!:,.;]*)?/ig);

我真的不知道regex所有部分的含义是什么,但最后一个#字符应该用反斜杠转义。

/^(?:([A-Za-z]+):)?('/{0,3})([0-9.'-A-Za-z]+)(?::('d+))?(?:'/([^?#]*))?(?:'?([^#]*))?(?:'#(.*))?$/