字符串以解析出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
顺便说一句:这个正则表达式需要是通用的。。。它将用于不同的"方案"
也许这不是您的目标,但为什么不使用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+))?(?:'/([^?#]*))?(?:'?([^#]*))?(?:'#(.*))?$/