我有这个常规例外:
(?:([^\:]*)\:\/\/)?(?:([^\:\@]*)(?:\:([^\@]*))?\@)?(?:([^\/\:]*)\.(?=[^\.\/\:]*\.[^\.\/\:]*))?([^\.\/\:]*)(?:\.([^\/\.\:]*))?(?:\:([0-9]*))?(\/[^\?#]*(?=.*?\/)\/)?([^\?#]*)?(?:\?([^#]*))?(?:#(.*))?
1)如果解析网址:http ://test.ru/long/path/file.ext?queryparam=123&more=234 - 没关系
2) 如果解析 url: ftp://admin:pass@server.com/long/path/file.ext -没问题
3) 但是,如果 GET 参数中存在 [AT] (@),它就不能正常工作!
示例:http ://test.ru/long/path/file.ext?queryparam=123&mail=test@domain.com
PS。在stackoverflow上发现常规异常,但不记得主题。:(